2012-09-05 51 views
0

我有一個下拉框根據其值填充文本框值。它在更改時觸發,但在頁面加載時不會觸發。如何在頁面加載時觸發它?下拉頁面加載時更改的選定索引

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    {  
    TextBox3.Text = DropDownList1.SelectedValue; 
     TextBox12.Text = DropDownList1.SelectedValue; 
     TextBox21.Text = DropDownList1.SelectedValue; 

    //etc 
+0

您是否設置了'AutoPostback = true'?否則,當用戶選擇某些內容時,dropdwown不會立即回發。 –

+0

autopost back設置爲true,但不填充文本框,除非我通過選擇不同的值手動觸發下拉菜單。 – EM90210

+2

是的,因爲事件處理程序總是由用戶操作觸發的。它不應該以編程方式調用。但是你可以重構代碼並創建一個填充你的TextBoxes的方法。然後,您可以從page_load **和**事件處理程序中調用此方法。 –

回答

1

添Schmelter的評論是正確的金錢。

// Wire up to the page load event 
protected void Page_Load(object sender, System.EventArgs e) 
{ 
    updateTextBoxes(); 
} 

// Wire up to the select index-changed event 
protected void DropDownList1_SelectIndexChanged(object sender, EventArgs e) 
{ 
    updateTextBoxes(); 
} 


// your workhorse method 
protected void updateTextBoxes() 
{ 
    TextBox3.Text = DropDownList1.SelectedValue; 
    TextBox12.Text = DropDownList1.SelectedValue; 
    TextBox21.Text = DropDownList1.SelectedValue; 

    // etc. 
} 
0

SelectedIndexChanged火災響應於用戶驅動的變化。將賦值邏輯移到另一個方法,並從Page_Load手動調用它,也從您的事件處理程序調用它。

0

它不會在頁面加載自動調用,您必須「手動」稱之爲:

void Page_Load(object sender, System.EventArgs e) { 

    // .... 

    DropDownList1_SelectedIndexChanged(DropDownList1, e); 

} 
相關問題