powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Запоминание просмотренных строк в GridView
24 сообщений из 24, страница 1 из 1
Запоминание просмотренных строк в GridView
    #38214147
Константин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
Запоминание просмотренных строк в GridView
    #38214150
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин1969просмотренная строка выделялась изменением цвета кнопки HyperLinkа сейчас цвет чего должен измениться?
...
Рейтинг: 0 / 0
Запоминание просмотренных строк в GridView
    #38214168
Да все равно чего. Хотя бы цвет кнопки "Выбрать" как было при использовании HyperLink. Главное условие, что бы при следующем просмотре таблицы было видно, какие записи просматривались, а какие нет. Насколько я понял, HyperLink работает с чем то вроде Cookies. Во всяком случае при нажатии на кнопку цвет меняется и этот цвет остается и при следующих сеансах работы. У меня заказчики занимаются просмотром отчетов, которые поступают в головной офис из регионов и им очень хочется, что бы было видно просматривали они эти отчеты или нет.
...
Рейтинг: 0 / 0
Запоминание просмотренных строк в GridView
    #38214178
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин1969,

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

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

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

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

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

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

В зависимости от раздела отчета открываются разные формы. Никакого варианта кроме описанного выше я не нашел.
...
Рейтинг: 0 / 0
Запоминание просмотренных строк в GridView
    #38214470
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
Запоминание просмотренных строк в GridView
    #38214496
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин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
Запоминание просмотренных строк в GridView
    #38214502
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин1969, Вам событие GridView.RowDataBound не знакомо?
...
Рейтинг: 0 / 0
Запоминание просмотренных строк в GridView
    #38214506
Березовский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может циклом по гриду пробежаться, при совпадении условий красить, ну или там жирным выделать
Код: c#
1.
2.
3.
4.
5.
  foreach (GridViewRow row in GridView1.Rows)
{


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

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

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

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

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


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

?

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

?

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

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


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