Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Запоминание просмотренных строк в GridView / 24 сообщений из 24, страница 1 из 1
05.04.2013, 11:55
    #38214147
Запоминание просмотренных строк в GridView
Константин1969,

Появилась вот такая проблема:Как сделать так, что бы GridView запоминал просмотренные строки.
Пришлось сделать возможность выбора вызываемой формы (окна?). Раньше форма вызывалась так:

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("код", "~/Edit.aspx?name={0}") %>' Target="_blank" Text="Подробно"></asp:HyperLink> - в этом случае просмотренная строка выделялась изменением цвета кнопки HyperLink.

Сейчас пришлось сделать так: заменил HyperLink на LinkButton:

<asp:LinkButton ID="ВыборСтроки" runat="server" CausesValidation="True" EnableViewState="TRUE" CommandName="Select" Text="Выбор"></asp:LinkButton>

обработка нажатия кнопки "Выбор" делается так:

Protected Sub GridReports_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridReports.SelectedIndexChanged

Dim PageName As String
Dim row As GridViewRow = GridReports.SelectedRow
Dim str1 As Label = row.FindControl("label7") 'код
Dim str2 As Label = row.FindControl("label8") 'crimcode
Dim str3 As Label = row.FindControl("label3") 'раздел
Session("sMainCode") = str1.Text
If (Int(str3.Text) = 13 Or Int(str3.Text) = 14 Or Int(str3.Text) = 15) Then
Session("sCrimCode") = str2.Text
PageName = "OpenWindow('edit.aspx?name=" + Trim(str1.Text) + "','Edit');"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Edit", PageName, True)
ScriptManager.RegisterStartupScript(Me, Me.GetType, "EditCrim", "OpenWindow('EditCrim.aspx','EditCrim');", True)
Else
PageName = "OpenWindow('edit.aspx?name=" + Trim(str1.Text) + "','Edit');"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Edit", PageName, True)
End If
Dim STW As LinkButton = row.FindControl("ВыборСтроки")
STW.ForeColor = Drawing.Color.DarkMagenta
End Sub

Все работает, но ... строка, которая выбиралась не запоминается. Помогите плиз, разрешить проблему!
...
Рейтинг: 0 / 0
05.04.2013, 11:58
    #38214150
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969просмотренная строка выделялась изменением цвета кнопки HyperLinkа сейчас цвет чего должен измениться?
...
Рейтинг: 0 / 0
05.04.2013, 12:06
    #38214168
Запоминание просмотренных строк в GridView
Да все равно чего. Хотя бы цвет кнопки "Выбрать" как было при использовании HyperLink. Главное условие, что бы при следующем просмотре таблицы было видно, какие записи просматривались, а какие нет. Насколько я понял, HyperLink работает с чем то вроде Cookies. Во всяком случае при нажатии на кнопку цвет меняется и этот цвет остается и при следующих сеансах работы. У меня заказчики занимаются просмотром отчетов, которые поступают в головной офис из регионов и им очень хочется, что бы было видно просматривали они эти отчеты или нет.
...
Рейтинг: 0 / 0
05.04.2013, 12:16
    #38214178
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969,

...ну, кроме как хранить статус строки (и логин просматривающего юзера) в БД - ничего и не получится .. даже если в куках хранить, пользователь может их почистить, зайти с другого компьютера ...
...
Рейтинг: 0 / 0
05.04.2013, 12:17
    #38214180
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
запоминание (и подкрашивание) посещенных ссылок - это работа браузера

тут же действительно лучше средствами JS навеситься на клик по кнопке и где-то в куках этот факт запоминать
...
Рейтинг: 0 / 0
05.04.2013, 13:26
    #38214313
Запоминание просмотренных строк в GridView
Придется делать через Cookies. Но интересно, как же HyperLink работает?
...
Рейтинг: 0 / 0
05.04.2013, 13:27
    #38214319
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
если задано то так: http://htmlbook.ru/css/visited
иначе стандартно
...
Рейтинг: 0 / 0
05.04.2013, 13:28
    #38214323
Запоминание просмотренных строк в GridView
Константин1969Придется делать через Cookies. Но интересно, как же HyperLink работает?

Этот вариант тоже рассматривал. Он самый простой. Проблема в том, что эти отчеты прочитывают как минимум 5 человек и каждый хочет, что бы было запоминание просмотренных им строк.
...
Рейтинг: 0 / 0
05.04.2013, 13:38
    #38214344
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969Константин1969Придется делать через Cookies. Но интересно, как же HyperLink работает?

Этот вариант тоже рассматривал. Он самый простой. Проблема в том, что эти отчеты прочитывают как минимум 5 человек и каждый хочет, что бы было запоминание просмотренных им строк.Это не проблема
...
Рейтинг: 0 / 0
05.04.2013, 13:39
    #38214346
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969Придется делать через Cookies. Но интересно, как же HyperLink работает?Как как. Переходы по ссылкам пишутся в историю браузера. А LinkButton рендерится как
Код: html
1.
<a href="javascript:__doPostBack('blablabla','')" />

То есть стандартное поведения гиперссылки зарубается. Надо писать свою реализацию через history, cookie или сервер, фигли.
...
Рейтинг: 0 / 0
05.04.2013, 13:42
    #38214351
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969Сейчас пришлось сделать так: заменил HyperLink на LinkButtonа кстати зачем?
...
Рейтинг: 0 / 0
05.04.2013, 13:44
    #38214358
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
ПаганельКонстантин1969Сейчас пришлось сделать так: заменил HyperLink на LinkButtonа кстати зачем?+1

Заменили открытие нового окна по ссылке на открытие через регистрацию скрипта на сервере: ScriptManager.RegisterStartupScript.
Как-то через одно место это выглядит.
...
Рейтинг: 0 / 0
05.04.2013, 14:33
    #38214457
Запоминание просмотренных строк в GridView
ПаганельКонстантин1969Сейчас пришлось сделать так: заменил HyperLink на LinkButtonа кстати зачем?

В зависимости от раздела отчета открываются разные формы. Никакого варианта кроме описанного выше я не нашел.
...
Рейтинг: 0 / 0
05.04.2013, 14:39
    #38214470
Запоминание просмотренных строк в GridView
skyANAПаганельпропущено...
а кстати зачем?+1

Заменили открытие нового окна по ссылке на открытие через регистрацию скрипта на сервере: ScriptManager.RegisterStartupScript.
Как-то через одно место это выглядит.

Может быть, но я не знаю способ прочитать строку в GridView кроме как так:

Protected Sub GridReports_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridReports.SelectedIndexChanged

Dim PageName As String
Dim row As GridViewRow = GridReports.SelectedRow
Dim str1 As Label = row.FindControl("label7") 'код
Dim str2 As Label = row.FindControl("label8") 'crimcode
Dim str3 As Label = row.FindControl("label3") 'раздел
Session("sMainCode") = str1.Text
If (Int(str3.Text) = 13 Or Int(str3.Text) = 14 Or Int(str3.Text) = 15) Then - если разделы отчета 13,14,15, то открываем форму EditCrim
Session("sCrimCode") = str2.Text
PageName = "OpenWindow('edit.aspx?name=" + Trim(str1.Text) + "','Edit');"
ScriptManager.RegisterStartupScript(Me, Me.GetType, "EditCrim", "OpenWindow('EditCrim.aspx','EditCrim');", True)
Else
'если нет, то форму Edit
PageName = "OpenWindow('edit.aspx?name=" + Trim(str1.Text) + "','Edit');"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Edit", PageName, True)
End If
Dim STW As LinkButton = row.FindControl("ВыборСтроки")
STW.ForeColor = Drawing.Color.DarkMagenta
End Sub


Мне проще было бы использовать HyperLink, но с SelectedIndexChanged он не работает.
...
Рейтинг: 0 / 0
05.04.2013, 14:51
    #38214496
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969skyANAпропущено...
+1

Заменили открытие нового окна по ссылке на открытие через регистрацию скрипта на сервере: ScriptManager.RegisterStartupScript.
Как-то через одно место это выглядит.

Может быть, но я не знаю способ прочитать строку в GridView кроме как так:

Protected Sub GridReports_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridReports.SelectedIndexChanged

Dim PageName As String
Dim row As GridViewRow = GridReports.SelectedRow
Dim str1 As Label = row.FindControl("label7") 'код
Dim str2 As Label = row.FindControl("label8") 'crimcode
Dim str3 As Label = row.FindControl("label3") 'раздел
Session("sMainCode") = str1.Text
If (Int(str3.Text) = 13 Or Int(str3.Text) = 14 Or Int(str3.Text) = 15) Then - если разделы отчета 13,14,15, то открываем форму EditCrim
Session("sCrimCode") = str2.Text
PageName = "OpenWindow('edit.aspx?name=" + Trim(str1.Text) + "','Edit');"
ScriptManager.RegisterStartupScript(Me, Me.GetType, "EditCrim", "OpenWindow('EditCrim.aspx','EditCrim');", True)
Else
'если нет, то форму Edit
PageName = "OpenWindow('edit.aspx?name=" + Trim(str1.Text) + "','Edit');"
ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Edit", PageName, True)
End If
Dim STW As LinkButton = row.FindControl("ВыборСтроки")
STW.ForeColor = Drawing.Color.DarkMagenta
End Sub


Мне проще было бы использовать HyperLink, но с SelectedIndexChanged он не работает.Не проще ли формировать нужные ссылки до отображения грида, а не при наступлении события GridReports_SelectedIndexChanged?
...
Рейтинг: 0 / 0
05.04.2013, 14:53
    #38214502
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969, Вам событие GridView.RowDataBound не знакомо?
...
Рейтинг: 0 / 0
05.04.2013, 14:55
    #38214506
Березовский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Может циклом по гриду пробежаться, при совпадении условий красить, ну или там жирным выделать
Код: c#
1.
2.
3.
4.
5.
  foreach (GridViewRow row in GridView1.Rows)
{


}
...
Рейтинг: 0 / 0
05.04.2013, 15:25
    #38214563
Запоминание просмотренных строк в GridView
skyANAКонстантин1969, Вам событие GridView.RowDataBound не знакомо?

Попробую сделать так. Должно получиться. Спасибо за подсказку!
...
Рейтинг: 0 / 0
05.04.2013, 16:09
    #38214661
Запоминание просмотренных строк в GridView
skyANAКонстантин1969, Вам событие GridView.RowDataBound не знакомо?

Не получилось: e.row.cells(n).NavigeteUrl - не понимает. Можно e.Cells(n).Text
...
Рейтинг: 0 / 0
05.04.2013, 16:21
    #38214694
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
FindControl
...
Рейтинг: 0 / 0
05.04.2013, 16:41
    #38214736
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969skyANAКонстантин1969, Вам событие GridView.RowDataBound не знакомо?

Не получилось: e.row.cells(n).NavigeteUrl - не понимает. Можно e.Cells(n).TextХм. Как же Вы дошли до сл. кода:
Код: vbnet
1.
Dim str1 As Label = row.FindControl("label7")

?
...
Рейтинг: 0 / 0
05.04.2013, 21:45
    #38215163
Запоминание просмотренных строк в GridView
skyANAКонстантин1969пропущено...


Не получилось: e.row.cells(n).NavigeteUrl - не понимает. Можно e.Cells(n).TextХм. Как же Вы дошли до сл. кода:
Код: vbnet
1.
Dim str1 As Label = row.FindControl("label7")

?

Так пробовал первым делом. Результат тот же.
...
Рейтинг: 0 / 0
06.04.2013, 07:51
    #38215293
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запоминание просмотренных строк в GridView
Константин1969skyANAпропущено...
Хм. Как же Вы дошли до сл. кода:
Код: vbnet
1.
Dim str1 As Label = row.FindControl("label7")

?

Так пробовал первым делом. Результат тот же.Я не телепат, покажите код.
...
Рейтинг: 0 / 0
08.04.2013, 11:33
    #38216803
Запоминание просмотренных строк в GridView
Получилось наконец-то. Всем спасибо за помощь! Вот фрагмент:

Protected Sub GridReports_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridReports.RowDataBound
Try
Dim row As GridViewRow = GridReports.SelectedRow

If e.Row.RowType = DataControlRowType.DataRow Then

Dim Раздел As Label = CType(e.Row.FindControl("Label3"), Label)
Dim Кнопка As HyperLink = CType(e.Row.FindControl("HyperLink1"), HyperLink)
Dim Код As Label = CType(e.Row.FindControl("Label7"), Label)
Dim CrimCode As Label = CType(e.Row.FindControl("Label8"), Label)
'сделать вторую кнопку HyperLink и в зависимости от раздела кнопки выключать
If Раздел.Text = "13" Then
Кнопка.NavigateUrl = String.Format("~/EditCrim.aspx?name={0}", CrimCode.Text)
Else
Кнопка.NavigateUrl = String.Format("~/Edit.aspx?name={0}", Код.Text)
End If

End If
Catch ex As System.IO.IOException
' Code that reacts to IOException.
Catch ex As InvalidCastException

Catch ex As NullReferenceException

Catch ex As Exception

End Try



End Sub
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Запоминание просмотренных строк в GridView / 24 сообщений из 24, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]