我有一个gridview,它成功绑定到数据库并获取所有数据。现在我在其中一个coloumns中添加了一个链接按钮:
GridViewRow grow = gvInbox.SelectedRow;
DataRow dr = ((DataTable)this.gvInbox.DataSource).Rows[grow.DataItemIndex];
int MessageId = (int)dr["MessageId"];
Response.Write(MessageId);
基本上我正在尝试获取数据行并获得MessageID
。但是,上面的第二行给我outofbound
例外。
答案 0 :(得分:0)
我认为你的类型转换稍微有点......你需要得到代表数据源的整个对象......
yours... ((DataTable)this.gvInbox.DataSource).
should be (DataTable)(this.gvInbox.DataSource).
所以你要对“this.gvInbox.DataSource”进行类型转换,这是数据表,然后从中获取.Rows []引用。
否则,它会像这样解释你的类型转换。
((DataTable)(this).gvInbox.DataSource).
答案 1 :(得分:0)
更好的方法是在GridView标记中将您的ID作为DataKey:
DataKeyNames="MessageId"
然后在你的代码中你可以引用它:
if(gvInbox.SelectedIndex > -1)
MessageId = (int) gvInbox.DataKeys[gvInbox.SelectedIndex].Value;
请记住,DataTable不会在回发中出现。因此,要将数据“输出”不是DataKey的GridView单元格,您会看到如下代码:
gvInbox.Rows[gvInbox.SelectedIndex].Cells[4].Text