如何在不刷新的情况下绑定多个下拉列表?

时间:2013-10-03 07:29:22

标签: c# asp.net

protected void Page_Load(object sender, EventArgs e)
{



        bindbranches();
        bindbranches1();

}
public void bindbranches()
{
    DataTable dtbranch = new DataTable();
    dtbranch = objsupplyBAL.getbrnch();

    ddlbranch.DataSource = dtbranch;
    ddlbranch.DataBind();
    ddlbranch.Items.Add(new ListItem("--select--", "0"));
    ddlbranch.SelectedIndex = ddlbranch.Items.Count - 1;

}
public void bindbranches1()
{
    DataTable dt = new DataTable();
    dt = objsupplyBAL.getbrnch();

    ddlbranch1.DataSource = dt;
    ddlbranch1.DataBind();
    ddlbranch1.Items.Add(new ListItem("--select--", "0"));
    ddlbranch1.SelectedIndex = ddlbranch1.Items.Count - 1;

}

如果没有刷新,我的下拉列表就没有绑定。如果我选​​择一个下拉列表,则另一个令人耳目一新。我必须为我的代码添加额外内容。任何人都可以告诉......

3 个答案:

答案 0 :(得分:3)

protected void Page_Load(object sender, EventArgs e)
{
  if(!IsPostBack)
 {

    bindbranches();
    bindbranches1();
  }
}

如果你添加这个...它的工作正常......首先尝试这个......

答案 1 :(得分:1)

发生这种情况的原因是每次页面回发时都在运行代码,请尝试以下操作只填充一次项目(在初始页面加载时):

protected void Page_Load(object sender, EventArgs e) {
    if (!this.IsPostBack) {
        bindbranches();
        bindbranches1();
    }
}

或者您也可以处理Page.Init事件来运行此代码,这将在首次加载页面时更改下拉列表,并在后续回发中保留值:

protected void Page_Init(object sender, EventArgs e) {
    bindbranches();
    bindbranches1();
}

如果您希望第二个下拉列表仅在选择第一个项目时刷新,请尝试以下解决方案:

protected void ddlbranch_SelectedIndexChanged(object sender, EventArgs e) {
    bindbranches1();
}

ddlbranch_SelectedIndexChanged绑定到ddlbranch控件的选定索引更改事件。这将仅在最初加载页面时以及当用户从ddlbranch下拉列表中选择项目时运行代码

答案 2 :(得分:0)

如果要在更改一个下拉列表时填充另一个下拉列表,则必须将下拉列表的AutoPostBack属性设置为true,以便更改事件将开始执行

Loot @ http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.autopostback.aspx