我有一个像这样的Gridview。
<asp:GridView runat="server" ID="gvMRLSearch" Width="100%" AutoGenerateColumns="false"
CssClass="datagrid" DataKeyNames="MRLID" >
<Columns>
<asp:BoundField DataField="MRLID" HeaderText="MRL ID" Visible="false" />
<asp:BoundField DataField="MRLCreateDate" HeaderText="MRL Create Date" />
<asp:BoundField DataField="MRLNumber" HeaderText="MRL Number" />
<asp:ButtonField ButtonType="Link" CommandName="printReport" Text="Print" HeaderText="Action" />
</Columns>
</asp:GridView>
我想在GridView_RowCommand事件上获取MRLID值。 我试过这样的:
protected void gvMRLSearch_RowCommand(object sender, GridViewCommandEventArgs e)
{
try
{
if (e.CommandName == "printReport")
{
int MRLID = Convert.ToInt32(gvMRLSearch.SelectedDataKey.Value);
但我只获得第一行MRLID,如果再次选择第二行,我会获得第一行MRLID。
答案 0 :(得分:2)
这是因为当您调用RowCommand事件处理程序时,它不会更改所选的网格行
设置网格的SelectedIndex属性
答案 1 :(得分:1)
我得到了答案。
if (e.CommandName == "printReport")
{
int rowindex = Convert.ToInt32(e.CommandArgument);
int MRLID = Convert.ToInt32(gvMRLSearch.DataKeys[rowindex].Value);