selected_indexchanged的激发问题(任何事件都无法在网格视图中打印单元格值)

本文关键字:视图 网格 打印 单元格 indexchanged 问题 事件 任何 selected | 更新日期: 2023-09-27 17:58:52

//aspx中的代码。

<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="City" HeaderText="City" />
<asp:BoundField DataField="MobilePhone" 
    HeaderText="Mobile Phone" />
        <asp:ButtonField Text="Button" ButtonType="Button" CommandName="Select" />
</Columns>
</asp:GridView>
   <asp:Label ID="Label" runat="server" Text="Label"></asp:Label>

//代码隐藏文件()

protected void grid_SelectedIndexChanged(object sender, 
EventArgs e)
{
int selectedRowIndex;
selectedRowIndex = grid.SelectedIndex;
GridViewRow row = grid.Rows[selectedRowIndex];
string name = row.Cells[0].Text;
Label.Text = "You selected " + name + ".";
}

Q: 我甚至无法打印选定的行。如果有人能帮我解决这个问题。

selected_indexchanged的激发问题(任何事件都无法在网格视图中打印单元格值)

您实际上应该从底层数据项中获取这个值。但是,如果由于某种原因,该值在数据绑定后被操纵,并且你需要获得该单元格中控件的实际值,那么你可能想要这样的东西:

    protected void grid_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = (GridViewRow)grid.Rows[grid.SelectedIndex];
        string name = ((Label)row.Cells[1].Controls[1]).Text;
        Label.Text = "You selected " + name + ".";
    }

但是。。。这是一个相当混乱的方式来实现这一点。此外,"标签"是一个相当糟糕的标签名称。此外,您发布的单元格[0]很可能是带有选择按钮的列,而不是具有所需值的列。而且,一旦进入正确的单元格,就有3个控件、2个文字和一个普通边界字段的标签。控件[1],第二个控件,是将具有您要查找的值的标签控件。

您必须使用RowCommand事件而不是SelectedIndexChanged事件。

 protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
        GridViewRow row = ((GridViewRow)((Button)e.CommandSource).NamingContainer);
        string name = row.Cells[0].Text;
        Label.Text = "You selected " + name + ".";
    }
}