在古老的WebForm中,用GridView控件实现了一个数据列表,列表最后一列是用asp:ButtonField
实现的修改按钮,点击修改时,要打开该条新闻的修改界面,这里有一个关键点,就是必须获取到点击新闻的ID,ASPX前端代码如下:
<asp:GridView ID="GridView" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" OnRowCommand="GridView_RowCommand">
<Columns>
<asp:BoundField HeaderText="新闻ID" DataField="ID" Visible="false" />
<asp:BoundField HeaderText="新闻标题" DataField="Title" />
<asp:BoundField HeaderText="发布时间" DataField="PubTime" />
<asp:ButtonField HeaderText="操作" Text="修改" CommandName="look" />
</Columns>
</asp:GridView>
.
上面GridView中用了OnRowCommand="GridView_RowCommand"
,在aspx.cs的GridView_RowCommand
方法体里获取点击新闻ID的2个方法:
方法一:
1,先获取点击新闻在列表中的索引值
int index = Convert.ToInt32(e.CommandArgument);
2,然后获取
string newsID = GridView.Rows[index].Cells[0].Text;
注意:本案例中,<asp:BoundField HeaderText="ID" DataField="ID" Visible="false" />
使用了Visible="false"
,所以方法一获取不到ID,把Visible="false"
去掉就能获取了。
方法二:
既然方法一里因为控件设置了Visible="false"
获取不到,那么再找个新方法来获取
1,在GridView里增加DataKeyNames属性,DataKeyNames的值可以是多个,用逗号分隔,比如DataKeyNames="ID,Title"
2,先获取点击新闻在列表中的索引值
int index = Convert.ToInt32(e.CommandArgument);
3,然后获取
string newsID = GridView.DataKeys[index]["ID"].ToString();
本文核心就是GridView.Rows[index].Cells[0].Text
和 GridView.DataKeys[index]["ID"].ToString()
,注意两者使用的区别!