如何在GridView中获取Cell的值?

时间:2014-05-02 19:21:50

标签: c# asp.net gridview

我已经在这里审查了各种各样的问题,但是我仍然无法解决这个问题。

我有一个网格视图(OrderList),在这个网格视图中,我有一个带有按钮的列,可以简单地更新特定字段(基本上将订单标记为已接受)。

在aspx文件中,我有以下代码

<asp:TemplateField>
    <ItemTemplate>
        <asp:Button ID="ButtonToAcceptOrder" runat="server" Text="Accept Order" CommandName="AcceptOrder" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>" />
    </ItemTemplate>
</asp:TemplateField>

在代码Behind file中,我有以下代码:

protected void OrderList_RowCommand(object sender, GridViewCommandEventArgs e)
{
     if (e.CommandName =="AcceptOrder")
     {
          // Retrieve the row index stored in the 
          // CommandArgument property. 
          int index = Convert.ToInt32(e.CommandArgument);

          // Retrieve the row that contains the button 
          // from the Rows collection.
          GridViewRow row = OrderList.Rows[index];

          Int32 oId = Int32.Parse(row.Cells[1].Text);

          //Code to Update database by order id
     }
}

错误来自oId,告知输入的格式不正确 在gridview的第一列中,我显示了我需要的ID。虽然其他专栏正在展示其他细节。

如果你发现我的代码中有任何问题,你可以帮忙吗?

(我之前已经按照本教程:http://msdn.microsoft.com/en-us/library/vstudio/bb907626(v=vs.100).aspx

1 个答案:

答案 0 :(得分:0)

如果每行都有唯一的ID,那么您应该使用GridView的DataKeyNames属性。

<GridView id="OrderList" DataKeyNames="oId"... />

然后在您的RowCommand代码中,像这样访问它:

Int32 oId = OrderList.DataKeys[row.DataItemIndex].Value;

这比试图从细胞中获取价值要清晰得多。