我有一个继承主页的网页,网页中有一个DropDownList(DDL),附有OnIndexChanged
个事件。
问题只是事件没有触发,即使发生回调(并且调用了page_load()
个事件)..
我做了一些搜索并读取将页面的viewstate
设置为false,会导致类似的问题,并检查母版页(我无权修改它)我发现它设置为false,会那是什么原因?
还可以在网页(继承页面)上设置viewstate = true
吗?它会覆盖母版页上的原始viewstate = false
吗?
编辑:
单击按钮时会显示DDL(使用Ajax),因此最初(在Page_load()DDL.visible = false
上,但在button_click()
事件中我设置DDL.visible = true
也填充了{{1}}绑定到DDL的datareader。
答案 0 :(得分:2)
DDL的AutoPostBack属性是否设置为true?
答案 1 :(得分:1)
您是否在Page_Load()方法中手动执行Databind()?在这种情况下,OnIndexChanged事件将丢失。 (因此解决方案不是在回发上绑定)
编辑(问题澄清后):我认为PostBackTrigger会帮助您找到理想的解决方案。
答案 2 :(得分:0)
有一些显而易见的事情需要检查。必须在页面顶部的页面指令中为您的页面正确设置以下3项内容。
AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default"
接下来在<asp:DropDownList
控制标记中,需要填写所有这些属性
ID="DropDownList1" runat="server" AutoPostBack="True"
onselectedindexchanged="DropDownList1_SelectedIndexChanged"
然后最后你必须在你的代码中有一个相应的事件处理程序
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
}
如果所有这些都是真的,那么唯一可以阻止页面在所选索引中发布更改的东西就是一些在帖子请求中返回false的javascript。
如果这些都没有帮助创建新页面并将代码复制并粘贴到其中,则再次构建并运行。