Как использовать скрытое поле границ в GridView в ASP.NET? - PullRequest
3 голосов
/ 12 февраля 2011

Я связываю GridView, используя DataSource в asp.net, и я хотел бы иметь некоторые скрытые поля BoundFields, чтобы я мог получить доступ к этим значениям в моей функции RowDataBound.Однако, когда я устанавливаю Visible = "False" в этих BoundFields, значения не устанавливаются и всегда остаются пустыми в функции RowDataBound.

Есть ли способ сделать это?Я видел некоторые предложения по установке стиля на BoundField на скрытый, но это также не сработало для меня.В идеале я даже не хочу, чтобы столбец создавался в виде сетки, я просто хочу, чтобы эти значения были скрыты, чтобы я мог получить к ним доступ.Спасибо!

Ответы [ 3 ]

2 голосов
/ 12 февраля 2011

Для этого я предлагаю вам использовать DataKey.

Просьба ссылаться на эту ссылку http://www.codeproject.com/KB/grid/Data_presentation.aspx

Например:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"

DataKeyNames = "emp_id, Code">

int EmployeeID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[0]);
  int DepartementID = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[1]);

в привязке к DataRow:

((GridView)sender).DataKeys[e.Row.RowIndex].Value.ToString();

Гита

2 голосов
/ 12 февраля 2011

Странно, как дела?Я знаю, что сделал это перед использованием:

<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("ColumnName")%>'/>
1 голос
/ 12 февраля 2011

Вы пытались использовать DataItem из GridViewRowEventArgs, переданного вашему RowDataBound методу?

Как:

protected void MyGridView_OnRowDataBound(object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        DataRowView rowView = (DataRowView)e.Row.DataItem;
        // do something with rowView["myHiddenField"]
    }
}

Проверьте MSDN здесь.

...