2010-02-20 207 views
0

我有一个网页继承了母版页,网页中有一个DropDownList(DDL),并附有一个OnIndexChanged事件。ASP.NET:DropDownList onIndexChanged事件未触发

的问题简单说就是,该事件不点火,即使出现回调(和page_load()事件被称为)..

我做了一些搜索并阅读其页面的viewstate设置为false,将导致一个类似的问题,并检查主页(我没有访问修改虽然)我发现它设置为false,这是否是原因?

也有可能在网页(继承页面)上设置viewstate = true?它会覆盖母版页上的原始viewstate = false吗?

编辑:

的DDL被示出(使用Ajax)当一个按钮是一个被点击的,所以最初(上的Page_Load()DDL.visible = false,但在button_click()事件我设置DDL.visible = true这也填充一个DataReader那被绑定到DDL。

+0

您究竟如何使用Ajax?你的DDL在更新面板中吗? – citronas 2010-02-20 16:23:04

+0

是的,它是..(填充),当按钮被点击时,我发送一个异步调用服务器来检索一些数据,并告诉它编辑DDL! ,它的工作原理..但是当我更改DDL的索引时,它执行回调而不触发事件! – 2010-02-20 16:30:00

回答

1

你执行一个手动的DataBind()在Page_Load()方法呢?在这种情况下,OnIndexChanged事件会迷路。(因此该解决方案是不是在回发绑定)

编辑(问题澄清后):我认为PostBackTrigger将帮助您达到所需的解决方案。

+0

我做了一个按钮点击的绑定,那是一样的吗?我应该添加一些像DDLName.OnindexChanged + = DDLOnIndexChanged'? – 2010-02-20 16:12:12

+0

您的标记中是否固定了DDL?然后我建议在标记中使用eventhandler的东西。将OnIndexChanged =“DLLOnIndexChanged”添加为您的DDL的属性。确保页面的“AutoWireUpEvent”属性设置为true。 – citronas 2010-02-20 16:16:01

+0

okie我会尝试..我也编辑的问题,增加更多的细节.. – 2010-02-20 16:18:57

2

DDL的AutoPostBack属性是否设置为true?

+0

是的,它是..(填充) – 2010-02-20 16:20:03

0

有几个明显的事情要检查。在页面顶部的页面指令中,您的页面必须正确设置以下三件事。

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) 
     { 

     } 

如果所有这些事情都是真的,唯一可以阻止页面在选定索引中发布更改的东西是一些javascript,它在post re上返回false寻求。

如果这些内容都不能帮助制作新页面并复制并粘贴代码,那么再次构建并运行。

+0

我已经检查过所有这些,我甚至试图以许多不同的方式重写事件处理程序。 – 2010-02-21 07:15:41