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: 我甚至无法打印选定的行。如果有人能帮我解决这个问题。
您实际上应该从底层数据项中获取这个值。但是,如果由于某种原因,该值在数据绑定后被操纵,并且你需要获得该单元格中控件的实际值,那么你可能想要这样的东西:
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 + ".";
}
}