2012-04-11 156 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后填充您的数据。