我的代码用数据填充数据网格视图然后我想要像这样
获取所选行的值string pName = GridView2.SelectedRow.Cells[0].Text;
不幸的是pName变成空字符串,我不知道为什么。以下是我正在尝试使用的代码示例。
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Id"), new DataColumn("Jmeno") });
dt.Rows.Add("John Hammond", "Canada");
dt.Rows.Add("Rick Stewards", "United States");
dt.Rows.Add("Huang He", "China");
dt.Rows.Add("Mudassar Khan", "India");
GridView2.DataSource = dt;
GridView2.DataBind();
}
}
protected void OnSelectedIndexChanged(object sender, EventArgs e)
{
string pName = GridView2.SelectedRow.Cells[0].Text;
Label1.Text = pName;
}
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="false"
OnSelectedIndexChanged = "OnSelectedIndexChanged"
AutoGenerateSelectButton="True">
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundField DataField="Id" HeaderText="ID" />
<asp:BoundField DataField="Jmeno" HeaderText="Jmeno" />
<asp:ButtonField Text="Click" CommandName="Select" ItemStyle-Width="30" />
</Columns>
</asp:GridView>
自动生成的select和Click都会触发OnSelectedIndexChanged,但我无法从Cell [index]获取任何值。有什么想法怎么做?
答案 0 :(得分:1)
由Arun Banik解决
您必须设置AutoGenerateColumns =&#34; true&#34;。另外,Cells [0]中没有任何内容。尝试设置单元格[1]或单元格[2]。 - Arun Banik
非常感谢。
答案 1 :(得分:0)
用以下代码替换您的OnSelectedIndexChanged
功能。由于您的选择按钮位于第0个索引位置
string pName = GridView2.SelectedRow.Cells[0].Text;
这行代码将获取第0个索引中的内容,即SelectButton
,因此pName将始终为空字符串。
protected void OnSelectedIndexChanged(object sender, EventArgs e)
{
string pName = GridView2.SelectedRow.Cells[1].Text;
string Jmeno = GridView2.SelectedRow.Cells[2].Text;
Label1.Text = "<b>pName :</b> " + ID + " <b>Jmeno :</b> " + Jmeno;
}