当另一个数据绑定下拉列表发生更改时,更新数据绑定下拉列表控件

时间:2012-04-11 23:37:02

标签: c# asp.net drop-down-menu

我有两个数据绑定下拉列表:

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();
}

但是,当回发页面并通过单击“提交”按钮再次调用DataBind时,ddlSelectProgram中选择的值不会被传入。“提交”按钮的单击事件仅调用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?

2 个答案:

答案 0 :(得分:1)

当页面加载仅填充ddlSelectSurveyType时。然后在更改ddlSelectSurveyType的值时使用autoPostBack和catch事件。然后,在您知道ProgramID被选中后,填充您的数据。

答案 1 :(得分:1)

将属性AutoPostBack =“True”添加到标记中的ddlSelectProgram,并将事件处理程序添加到代码隐藏中的ddlSelectProgram的SelectedIndexChanged事件中。在该事件中绑定ddlSelectSurveyType。