如何在选定的索引更改属性上找到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”。