powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Выделение активной строки в DataGrid (ASP.NET 20)
8 сообщений из 8, страница 1 из 1
Выделение активной строки в DataGrid (ASP.NET 20)
    #33896068
lunoxod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, нужна не реализация, но идея. Суть вопроса: есть таблица со строками, каждая строка-часть ответа пользователя в форуме, а ниже в текстовом поле полное содержимое ответа. При клике по строке таблицы содержимое текстбокса меняется (содержимое берем из БД). Вопрос, как показать в таблице, по какой собственно строке юзер кликнул, как-то выделить ее надо. Идеи ?
...
Рейтинг: 0 / 0
Выделение активной строки в DataGrid (ASP.NET 20)
    #33896204
prosto_Anechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, нужна не реализация, но идея. Суть вопроса: есть таблица со строками, каждая строка-часть ответа пользователя в форуме, а ниже в текстовом поле полное содержимое ответа. При клике по строке таблицы содержимое текстбокса меняется (содержимое берем из БД). Вопрос, как показать в таблице, по какой собственно строке юзер кликнул, как-то выделить ее надо. Идеи ?

На клик по строке делаем постбек:

    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

вот в принципе и все
...
Рейтинг: 0 / 0
Выделение активной строки в DataGrid (ASP.NET 20)
    #33897660
lunoxod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон, я ошибся, элемент у меня GridView, это во первых. Во вторых, я так и не понял, что такое inp_row_index ?
...
Рейтинг: 0 / 0
Выделение активной строки в DataGrid (ASP.NET 20)
    #33897793
prosto_Anechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пардон, я ошибся, элемент у меня GridView, это во первых. Во вторых, я так и не понял, что такое inp_row_index ?
inp_row_index - это хиден поле, типа:
<INPUT id="inp_row_index" type="hidden" runat="server">

А насчет гридвью - я точно не могу сказать, но помоему там что-то наподобии тоже можно провернуть. Есть еще GridView.SelectedRowStyleGridView.SelectedRowStyle. Покопайтесь там...
...
Рейтинг: 0 / 0
Выделение активной строки в DataGrid (ASP.NET 20)
    #33909803
lunoxod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не должен этот код работать:
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"/>
то никаких серверных событий у него быть не может...Снова я в тупике
...
Рейтинг: 0 / 0
Выделение активной строки в DataGrid (ASP.NET 20)
    #33910587
prosto_Anechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не должен этот код работать:
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 нельзя разве? Помоему вполне даже можно...
...
Рейтинг: 0 / 0
Выделение активной строки в DataGrid (ASP.NET 20)
    #33910591
prosto_Anechka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
посмотрите тут повнимательней
...
Рейтинг: 0 / 0
Выделение активной строки в DataGrid (ASP.NET 20)
    #33910669
lunoxod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллега, спасибо за участие, нужна была идея. Вы ее и дали, в моей интерпретации я ее понял так "Страница, через свойство кликнутой строки 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>";
}
}
}
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Выделение активной строки в DataGrid (ASP.NET 20)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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