2013-05-08 46 views
3

我的下拉列表重置为默认当我尝试选择一个项目,而且还当我把一个换行符不会触发的落后方法的代码,并试图对其进行调试:下拉列表重置

这里的标记,

<script type="text/javascript"> 
    function bringPOPup() 
    {  
     $.blockUI({message: $('#anotherUP'), css: { width: '600px' } }); 
    } 
</script> 



<div id="anotherUP" style="display: none; cursor: default"> 
    <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> 
     <ContentTemplate> 
       <asp:DropDownList ID="drop1" runat="server" EnableViewState="true" AutoPostBack="true" OnSelectedIndexChanged="Drop1_SelectedIndexChanged"/> 
     </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostbackTrigger ControlID="drop1" EventName="SelectedIndexChanged" /> 
    </Triggers> 
    </asp:UpdatePanel> 
</div> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true"> 
    <ContentTemplate> 
     <input type="button" id="Button3" value="Click me to Bring Pop Up" onclick="bringPOPup()" /> 
     <br /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

这里是后面的代码,

public partial class myUserControl : UserControl 
{ 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       BindDropDownList(); 
      } 
     } 

     protected void BindDropDownList() 
     { 
      using (SqlDataSource ds = new SqlDataSource(ConnectionString(), SelectCommand())) 
      { 
       System.Data.DataView dv = (System.Data.DataView)ds.Select(DataSourceSelectArguments.Empty); 
       if (dv.Count > 0) 
       { 
        drop1.DataSource = ds; 
        drop1.DataTextField = "UserName"; 
        drop1.DataBind(); 
        drop1.Items.Insert(0, "Please select a Username "); 
       } 
      } 
      UpdatePanel2.Update(); 
     } 

     protected void Drop1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      //while debugging never hits break point. 
     } 
} 

更新

如果我注释掉UpdatePanel2,那么DDL不会重置,但仍然不触发方法后面的代码。

+0

有没有问题,只有你的代码做什么的描述。 – 2013-05-08 14:31:41

+0

DDL重置时,我不应该选择一个项目,既不是代码后面的方法 – Mathematics 2013-05-08 14:32:40

+1

我创建了一个用户控件使用您的代码,它工作正常。我怀疑父页面存在回发冲突。 – Ian 2013-05-08 15:35:04

回答

1

这是共享点事件处理的常见问题。请在网页加载时尝试以下代码。

protected void Page_Load(object sender, EventArgs e) 
    { 
     Drop1.SelectedIndexChanged += new EventHandler(Drop1_SelectedIndexChanged); 

     if (!IsPostBack) 
     { 
      BindDropDownList(); 
     } 
    }