1

网格视图代码:

<asp:GridView ID="gvVessel" runat="server" AutoGenerateColumns="false" GridLines="None"
     EmptyDataText="No Vessels found." OnRowCommand="gvVessel_RowCommand"      
     OnSelectedIndexChanged="gvVessel_SelectedIndexChanged" DataKeyNames="VesselID" >
<asp:/GridView>

代码背后:

protected void gvVessel_SelectedIndexChanged(object sender, EventArgs e)
{
    int index = Convert.ToInt16(gvVessel.SelectedDataKey.Value);
    Cache["index"] = index;

    Response.Redirect("VesselDraft.aspx");
}

为什么事件没有触发?

4

2 回答 2

0

请设置属性

AutoPostback ="true" for GridView.

谢谢, 海特什

于 2013-07-20T06:04:36.003 回答
0

正如其中一个 SO 问题中所建议的那样
GridView OnSelectedIndexChanged 事件未触发
Gridview selectedindex 已更改未在第一次单击时触发
gridview SelectedIndexChanged 事件未触发。我正在使用 asp.net 4.0 。顺便说一句,rowdatabound 事件正在完美触发

如果您只是单击 中的行GridView,则不会触发该事件。您必须在该行中有某种按钮才能单击,这将触发RowCommand事件以及SelectedIndexChanged事件(当然,如果您单击的行尚未被选中)。它不完全像 Windows 窗体 DataGridView =)

让事件触发的最简单方法是将此属性添加到您的GridView标记中:

AutoGenerateSelectButton="True"

这将创建一个 "Select" ,当您单击它时,它将在您的代码隐藏中LinkButton触发该事件。Gridview1_SelectedIndexChanged2

编辑:为了澄清,这是您需要添加该属性的地方:

<asp:GridView ID="GridView1" runat="server" GridLines="None" 
  Width="930px" CellPadding="4" ForeColor="#333333"  
  onselectedindexchanged="GridView1_SelectedIndexChanged2"
  AutoGenerateSelectButton="True" >
于 2013-02-19T04:41:56.117 回答