ASP.NET GridView SelectedRow

时间:2016-12-15 15:11:22

标签: c# asp.net gridview

我的代码用数据填充数据网格视图然后我想要像这样

获取所选行的值
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]获取任何值。有什么想法怎么做?

2 个答案:

答案 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;
    }