【问题标题】:Updating a databound dropdownlist control when another databound dropdownlist changes当另一个数据绑定下拉列表更改时更新数据绑定下拉列表控件
【发布时间】:2012-04-11 23:37:02
【问题描述】:

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

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?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我实际上已经这样做了,这不是最终的解决方案,但它是其中的一部分。我需要绑定控件两次,因为它需要在页面加载和为 ddlSelectProgram 触发 SelectedIndexChanged 事件时完成。所以,除了简单地在事件中绑定之外,我首先必须将 DataSource 设置为 null,然后重新分配 DataSource,最后调用 Bind。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多