2
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;

}

如果我选择一个下拉列表,则另一个下拉列表正在刷新。我必须在我的代码中添加额外的内容。谁能告诉...

4

3 回答 3

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

    bindbranches();
    bindbranches1();
  }
}

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

于 2013-10-03T07:32:57.450 回答
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 下拉列表中选择项目时运行代码

于 2013-10-03T07:34:27.803 回答
0

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

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

于 2013-10-03T07:33:12.570 回答