为什么我的下拉列表在点击按钮后没有绑定?

时间:2015-03-30 11:49:08

标签: c# asp.net visual-studio

我试图在点击按钮时重新点击我的下拉列表,特别是如果阻止但它没有重新绑定,我的意思是它应该重新加载下拉,有点刷新并且应该选择第一个项目,我这样做但没有被重新加入

代码:(它在里面点击事件)

 if (NotAssignedConductors.Length > 0)
            {
                string[] NotAssignedConductorsArray = NotAssignedConductors.Split(':');

                foreach (string str in NotAssignedConductorsArray)
                {

                    ResultLabel.ResultLabelAttributes(str, ProjectUserControls.Enums.ResultLabel_Color.Red);

                }
                FillDropDownListDevices();


            }

被调用的方法:

public void FillDropDownListDevices()
    {
        DropDownListDevices.DataSource = ManageTransport.ManageConductorDevices.GetDevices();
        DropDownListDevices.DataTextField = "TerminalSNO";
        DropDownListDevices.DataValueField = "DeviceID";
        DropDownListDevices.DataBind();
        DropDownListDevices.Items.Insert(0, new ListItem("None", "-1"));
    }

按钮:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
  <ContentTemplate>
    <asp:DropDownList ID="DropDownListDevices" AutoPostBack="true"  runat="server" OnSelectedIndexChanged="DropDownListDevices_SelectedIndexChanged" CssClass="form-control">
    </asp:DropDownList>
  <ContentTemplate>
<Triggers>
            <asp:AsyncPostBackTrigger ControlID="btnCreate" EventName="click" />
        </Triggers>
</asp:updatePanel>

1 个答案:

答案 0 :(得分:0)

有很多种可能性

  1. 如果您使用的是更新面板,请确保在点击按钮时触发更新面板更新

  2. 检查您的page_load / page_loadComplete事件,并确保您没有再次绑定下拉列表。

  3. 检查您的浏览器控制台是否会在按钮点击时抛出任何错误?
  4. 在更新面板上创建回传后触发器

     <asp:UpdatePanel ID="UpdatePanel1" runat="server">
      <ContentTemplate>
        <asp:DropDownList ID="DropDownListDevices" AutoPostBack="true"  runat="server" OnSelectedIndexChanged="DropDownListDevices_SelectedIndexChanged" CssClass="form-control">
        </asp:DropDownList>
      <ContentTemplate>
     <Triggers>
         <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
         </Triggers>
    </asp:updatePanel>
    

    将您的第一次装订方法放在回发

    protected void Page_Load(object sender, EventArgs e)
         {
             if (!IsPostBack) 
             {
                 //means no postback..page loaded first time
                 // Put your first time Binding method here 
    
             }
         }