开发者

ASP.NET: DropDownList onIndexChanged Event Not firing

开发者 https://www.devze.com 2022-12-20 15:19 出处:网络
I have a webpage inheriting a masterpage, The webpage has a DropDownList (DDL) in it, with an OnIndexChanged Event attached to it.

I have a webpage inheriting a masterpage, The webpage has a DropDownList (DDL) in it, with an OnIndexChanged Event attached to it.

The problem simply is that the event is not firing, even though a callback occurs (and page_load() events are called)..

I did some searching and read that having the page's viewstate set to false, would cause a similar issue, and checking the Masterpage (i dont have access to modify it though) i found it set to false, would t开发者_如何学Chat be the reason ?

Also is it possible to set the viewstate = true on the webpage (the inheriting page) ? would it override the original viewstate = false on the master page?

EDIT :

The DDL is shown (using Ajax) when a button is a clicked , so initially (on Page_load() DDL.visible = false , but in the button_click() event i set DDL.visible = true which also populates a datareader that gets bound to the DDL .


Is the DDL's AutoPostBack property set to true?


Do you perform a manually Databind() in the Page_Load() Method? In that case the OnIndexChanged Event will get lost. (Therefore the solution would be not to bind on postback)

Edit (after question clarification): I think a PostBackTrigger will help you to the desired solution.


There are a few obvious things to check. The following 3 things must be setup correctly for yo your page in the page directive at the top of the page.

AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" 

Next in the <asp:DropDownList control markup all of these attributes are required to be filled out

ID="DropDownList1" runat="server" AutoPostBack="True" 
        onselectedindexchanged="DropDownList1_SelectedIndexChanged"

Then finally you must have a corresponding handler for the event in your code behind

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

If all those things are true the only thing that could stop the page from posting on a change in the selected index is some javascript that returns false on a post request.

If none of these help make a new page and copy and paste your code to it, then build and run again.

0

精彩评论

暂无评论...
验证码 换一张
取 消