joh*_*nny 2 .net asp.net events gridview
我无法触发我的下拉列表的SelectedIndexChanged.我有以下内容:
<form id="form1" runat="server">
<div>
<asp:GridView id="grdPoll" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
AutoPostBack="true"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
<asp:ListItem Text="Review" Value="Review" Selected="True">Review</asp:ListItem>
<asp:ListItem Text="Level1" Value="lvl1">Send Back to Level1</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Label ID="lblCity" runat="server" Text="Label"></asp:Label>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
在我的代码背后我有这个:
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
this.lblCity.Text = ((DropDownList)sender).SelectedValue;
}
Run Code Online (Sandbox Code Playgroud)
如果我把这个相同的ddl放在gridview之外,它就会触发.
回发正在发生,autopostback设置为true.事件永远不会发生.为什么我不能在gridview中触发我的事件?
谢谢.
好吧,这个问题是在一个多月前提出的,现在可能无关紧要,但是@LFSR最近很友好地编辑它,它在"活动问题"列表中.
既然没有答案(224次观看!),我想我应该试一试:
问题是在GridView的上下文中,DropDownList(以下称为DDL)是一个动态控件,因此它的事件需要在Postback上重新附加.
理解这个概念后,解决方案变得相对简单:
ASPX:
<asp:DropDownList ID="DDL1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DDL1_SelectedIndexChanged">
<asp:ListItem Text="Review" Value="Review" Selected="True">Review</asp:ListItem>
<asp:ListItem Text="Level1" Value="lvl1">Send Back to Level1</asp:ListItem>
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)
CS代码:
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
// Bind the GridView to something.
DataBindGrid();
}
}
protected void DDL1_SelectedIndexChanged(object sender, EventArgs e)
{
this.lblCity.Text = ((DropDownList)sender).SelectedValue;
}
protected void grdPoll_RowDataBound(object sender, GridViewRowEventArgs e)
{
if(Page.IsPostBack)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddl = e.Row.FindControl("DDL1") as DropDownList;
if(ddl != null)
{
ddl.SelectedIndexChanged += new EventHandler(DDL1_SelectedIndexChanged);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23825 次 |
最近记录: |