Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Выделение активной строки в DataGrid (ASP.NET 20)
|
|||
|---|---|---|---|
|
#18+
Коллеги, нужна не реализация, но идея. Суть вопроса: есть таблица со строками, каждая строка-часть ответа пользователя в форуме, а ниже в текстовом поле полное содержимое ответа. При клике по строке таблицы содержимое текстбокса меняется (содержимое берем из БД). Вопрос, как показать в таблице, по какой собственно строке юзер кликнул, как-то выделить ее надо. Идеи ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 05:07 |
|
||
|
Выделение активной строки в DataGrid (ASP.NET 20)
|
|||
|---|---|---|---|
|
#18+
Коллеги, нужна не реализация, но идея. Суть вопроса: есть таблица со строками, каждая строка-часть ответа пользователя в форуме, а ниже в текстовом поле полное содержимое ответа. При клике по строке таблицы содержимое текстбокса меняется (содержимое берем из БД). Вопрос, как показать в таблице, по какой собственно строке юзер кликнул, как-то выделить ее надо. Идеи ? На клик по строке делаем постбек: function select (rowIndex) { document.getElementById("<%=inp_row_index.ClientID%>").value = rowIndex1; <%=Page.GetPostBackEventReference(inp_row_index)%> } В коде: private void DataGrid_ItemDataBound(object sender, DataGridItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { e.Item.Attributes.Add("onclick", String.Format( "select({0});", e.Item.ItemIndex ) ); } } inp_row_index - хиден поле, ловим постбек на нем: private void inp_row_index_ServerChange(object sender, System.EventArgs e) { // тут выделяем строку, по которой был клик int index = int.Parse(inp_row_index.Value); DataGrid.SelectedIndex = index; DataGrid.EditItemIndex = index; } соответсвенно надо настроить свойства SelectedItemStyle вот в принципе и все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 09:22 |
|
||
|
Выделение активной строки в DataGrid (ASP.NET 20)
|
|||
|---|---|---|---|
|
#18+
Пардон, я ошибся, элемент у меня GridView, это во первых. Во вторых, я так и не понял, что такое inp_row_index ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 15:35 |
|
||
|
Выделение активной строки в DataGrid (ASP.NET 20)
|
|||
|---|---|---|---|
|
#18+
Пардон, я ошибся, элемент у меня GridView, это во первых. Во вторых, я так и не понял, что такое inp_row_index ? inp_row_index - это хиден поле, типа: <INPUT id="inp_row_index" type="hidden" runat="server"> А насчет гридвью - я точно не могу сказать, но помоему там что-то наподобии тоже можно провернуть. Есть еще GridView.SelectedRowStyleGridView.SelectedRowStyle. Покопайтесь там... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 16:08 |
|
||
|
Выделение активной строки в DataGrid (ASP.NET 20)
|
|||
|---|---|---|---|
|
#18+
Не должен этот код работать: 1.Если inp_row_index объявлен как серверный контроль вот так: <asp:TextBox ID="inp_row_index" runat="server" Visible="False"></asp:TextBox> то его на результирующей HTML странице, во-первых нет, просто нет, во-вторых такого события ServerChange у него тоже нет. 2.Если его объявить как HTML элемент вот так: <input id="inp_row_index" type="hidden"/> то никаких серверных событий у него быть не может...Снова я в тупике ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 10:23 |
|
||
|
Выделение активной строки в DataGrid (ASP.NET 20)
|
|||
|---|---|---|---|
|
#18+
Не должен этот код работать: 1.Если inp_row_index объявлен как серверный контроль вот так: <asp:TextBox ID="inp_row_index" runat="server" Visible="False"></asp:TextBox> то его на результирующей HTML странице, во-первых нет, просто нет, во-вторых такого события ServerChange у него тоже нет. 2.Если его объявить как HTML элемент вот так: <input id="inp_row_index" type="hidden"/> то никаких серверных событий у него быть не может...Снова я в тупике А дописать во втором случае runat=server нельзя разве? Помоему вполне даже можно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 14:21 |
|
||
|
Выделение активной строки в DataGrid (ASP.NET 20)
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 14:22 |
|
||
|
Выделение активной строки в DataGrid (ASP.NET 20)
|
|||
|---|---|---|---|
|
#18+
Коллега, спасибо за участие, нужна была идея. Вы ее и дали, в моей интерпретации я ее понял так "Страница, через свойство кликнутой строки e.Row.RowIndex как-то передает это значение самой себе". А вот и реализация: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //В столбце 0 находится ссылка, по которой будем кликать HyperLink hlnk = (HyperLink) e.Row.Cells[0].Controls[0]; //Дополняем ее URL номером текущей строки hlnk.NavigateUrl = hlnk.NavigateUrl + "&row_index=" + e.Row.RowIndex.ToString(); //Если номер строки совпадает с параметром, переданным через URL, if (e.Row.RowIndex.ToString() == Request.Params["row_index"]) { //То выделяем текст ссылки жирным hlnk.Text = "<b>" + hlnk.Text + "</b>"; } } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2006, 14:44 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33910669&tid=1390734]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 321ms |

| 0 / 0 |
