2012-04-11 196 views
0

我有兩個數據綁定的下拉列表:更新數據綁定下拉列表控件時,另一個數據綁定的下拉列表改變

if (!IsPostBack) 
    { 
     ddlSelectProgram.DataSource = new PEIATableAdapters.programTableAdapter().GetData(); 
     ddlSelectProgram.DataBind(); 

     ddlSelectSurveyType.DataSource = new PEIATableAdapters.ParticpantSurveyFormIDsTableAdapter().GetFormIDsByProgramID(ProgramID); 
     ddlSelectSurveyType.DataBind(); 

     BindData(); 
    } 

到BindData該呼叫被正確地填充grdResults頁面加載時:

private void BindData() 
{ 
    PEIATableAdapters.ParticipantSurveysTableAdapter adapter = new PEIATableAdapters.ParticipantSurveysTableAdapter(); 

    grdResults.DataSource = adapter.GetDataByFormID(FormID);   
    grdResults.DataBind(); 
} 

然而,當頁面被重新發布並且通過單擊Submit按鈕再次調用DataBind,在ddlSelectProgram中選擇的值沒有被傳入。Submit按鈕的click事件僅僅是調用Databind()並且事件正在觸發。

這裏是ProgramID和FormID屬性:

protected int ProgramID 
{ 
    get 
    { 
     return Convert.ToInt32(ddlSelectProgram.SelectedValue); 
    } 
    set 
    { 
     ddlSelectProgram.SelectedValue = value.ToString(); 
    } 
} 

protected int FormID 
{ 
    get 
    { 
     return Convert.ToInt32(ddlSelectSurveyType.SelectedValue); 
    } 
    set 
    { 
     ddlSelectSurveyType.SelectedValue = value.ToString(); 
    } 
} 

如何配合這兩個控件在一起,這樣當ddl_SelectProgram隨後改變了ddlSelectSurveyType改變?

回答

1

在標記中將屬性AutoPostBack =「True」添加到ddlSelectProgram中,並將事件處理程序添加到代碼隱藏中的ddlSelectProgram的SelectedIndexChanged事件中。在該事件中綁定ddlSelectSurveyType。

+0

我實際上已經做到了這一點,它不是最終的解決方案,但它是它的一部分。我需要將控件綁定兩次,因爲它需要在頁面加載以及爲ddlSelectProgram觸發SelectedIndexChanged事件時完成。因此,除了簡單地綁定事件,我首先必須將DataSource設置爲null,然後重新分配DataSource並最終調用Bind。 – Darren 2012-04-12 16:59:08

1

當頁面加載僅填充ddlSelectSurveyType時。然後在ddlSelectSurveyType的值改變時使用autoPostBack和catch事件。然後在您知道選擇了ProgramID後填充您的數據。