在另一个数据绑定下拉列表更改时更新另一个数据绑定下拉列表控件

本文关键字:下拉列表 数据绑定 另一个 更新 控件 | 更新日期: 2023-09-27 18:30:44

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

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(),并且该事件正在触发。

下面是程序 ID 和 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?

在另一个数据绑定下拉列表更改时更新另一个数据绑定下拉列表控件

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

当页面加载时,仅填充 ddlSelectSurveyType。然后,当 ddlSelectSurveyType 的值发生更改时,使用自动回发和捕获事件。然后在您知道选择了程序 ID 后填充您的数据。