【发布时间】:2014-09-26 19:35:44
【问题描述】:
假设我的 GridView (ID & Name) 中只有两列,我需要在单击时获取 ID 的值。例如,如果我点击 123,我应该得到 123。但是在这里...情况并非如此...当我单击任何 ID 时,它会在该 ID 右侧返回名称(例如;如果是 123,我会得到 Tony Stark),但是当我点击时获取 ID 的值,它总是返回一个空字符串。
换句话说,我在 id 中得到了正确的名称(当 X=1 时),但是当 X=0 时,id 变成一个空字符串... (int X and string id : see C#代码如下)
我的 GridView 中的 XAML 代码:
<asp:ButtonField
DataTextField="ID"
HeaderText="ID">
</asp:ButtonField>
<asp:BoundField
DataField="Name"
HeaderText="NAME">
</asp:BoundField>
C#:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
string id = GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[X].Text.ToString();
Response.Write(id);
}
怎么了?!!以及如何解决这个问题?谢谢!
【问题讨论】:
-
X 应该是什么?
-
X 是单元格的索引(参见 C# 代码)。 Name 列为 1,ID 列应为 0,但事实并非如此。 0 总是给我一个空字符串。
-
一般来说,对于 .net 网格,Cell 内部会有另一个控件。如果您在调试时检查 Cells[0].Controls 或 .Children,是否有这种情况?另外,你确定你有正确的行索引吗?
-
是的,行是正确的,单元格也是。当我尝试 string id = EmployeeList.Rows[Convert.ToInt32(e.CommandArgument)].Cells[0].Controls.ToString(); 时得到这个输出"System.Web.UI.ControlCollection"
-
EmployeeList.Rows[Convert.ToInt32(e.CommandArgument)].Cells[0].Controls[0]的类型是什么
标签: c# asp.net gridview buttonfield