如何在选定的索引更改属性上找到gridview的datakey值?

我的gridview是这样的,但是当我选择查看按钮以查找所选索引的主键值列时,我收到错误。 请帮我解决这个问题。

        <%----%>   <asp:TextBox ID ="txtQuestion" Text ='' runat ="server" TextMode ="MultiLine" Height="100" Width ="350"> <%-- --%>  <%-- <asp:TextBox ID ="txtQuestion" Text ='' runat ="server" TextMode ="MultiLine" > --%>       <asp:Label ID ="lblPosterName" Text ='' runat ="server" >        <asp:Label ID ="lblDateTime" Text ='' runat ="server" >            

我的代码是……

 protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { try { Int64 forumId = (Int64)GridView1.SelectedValue; Session["forumId"] = forumId; Response.Redirect("Thread.aspx"); } catch (Exception) { throw; } } 

首先,您必须在网格视图声明中定义要创建datakey的字段的字段名称。 例如,如果你想要“forumId”datakey.than

  

而且你可以通过这种方式访问

 int intforumid = Convert.ToInt32(GridView1.DataKeys[row.RowIndex].Values[0]); 
 protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { try { Int64 forumId = Convert.ToInt64(GridView1.SelectedRow.Cells[1].Text); Session["forumId"] = forumId; Response.Redirect("Thread.aspx"); } catch (Exception) { throw; } } 

看起来你只需要将DataKeyNames属性设置为forumId就好;

  

您可以将DataKeyNames设置为forumId如下所示

  

由于您尚未在当前解决方案中提供任何数据键名称GridView1.SelectedValue将不包含您期望的值

您需要在Gridview中指定要在Datakey选项卡下设置的唯一列名称。

从那里,您需要在后台代码上调用_selectedIndexChanged方法。

如果你没有在page.cs代码中使用gridview select事件,那么你只需从gridview页面的aspx代码中删除OnSelectedIndexChanged =“GridView1_SelectedIndexChanged”。