2010-02-20 128 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