Добавить ID в строку GridView
как добавить ID в строки GridView (идентификаторы должны быть отображены)?
Я использую .NET (C#). У меня есть контроль GridView.
у меня есть некоторые функции javascript, которые управляют строками таблицы, но для этих строк необходимо иметь идентификаторы:
<table>
<tr id=1> ...
<tr id=2> ... //id should come from database
..
мой GridView генерируется из данных из базы данных. Важно не иметь поддельных идентификаторов строк, а действительно идентификаторы строк из БД (есть функция ajax javascript, которая обновляет БД на основе этих идентификаторов и пользователя манипуляции со столом).
часть моего GridView является следующим:
<asp:GridView ID="grdNews" runat="server" BorderStyle="None" RowStyle-BorderStyle="None"
GridLines="None" CssClass="table" Style="white-space: nowrap" AutoGenerateColumns="False"
DataKeyNames="ID" AllowSorting="True" AllowPaging="true" OnSorting="grdNews_Sorting" OnRowDataBound="grdNews_RowDataBound">
<RowStyle BorderStyle="None" />
<HeaderStyle CssClass="nodrag" />
<Columns>
....
я попробовал следующее:
protected void grdNews_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.ID = grdNews.DataKeys[e.Row.RowIndex].Value.ToString();
}
}
Это дает e.Гребите.ID правильное значение, но это не отображает этот ID.
Итак, как отобразить идентификаторы из базы данных для строк в GridView?
3 ответов
попробовать следующее....
protected void grdNews_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
GridViewRow row = e.Row;
row.Attributes["id"] =grdNews.DataKeys[e.Row.RowIndex].Value.ToString();
}
}
самый простой способ-использовать скрытое поле, к которому вы можете получить доступ с клиентской и серверной стороны.
<Columns>
<asp:TemplateField >
<ItemTemplate>
<asp:HiddenField ID="HiddenID" runat="server" Value='<%#Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
....
</Columns>
Vb.net код
Private Sub gvPayments_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvPayments.RowDataBound
Dim counter As Integer = 0
For Each oItem As GridViewRow In gvPayments.Rows
counter += 1
oItem.Cells(1).Text = counter.ToString()
oItem.Attributes("id") = "tr_" + counter.ToString
Next
End Sub