2010-11-09 5 views
4

У меня есть раскрывающийся список (dr1), который должен запускать обновление dr2 без влияния на dr3. Проблема в том, что dr1 запускает обновление, но не переходит в dr1_SelectedIndexChanged. Я знаю, потому что метка не изменится, и что пауза не бываетDropdownlist не вызывает SelectedIndexChanged

Вот мой HTML код:

<form runat="server"> 
<asp:ScriptManager ID="sm" runat="server" /> 
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DisplayAfter="5"> 
    <ProgressTemplate> 
     <span style="color: Red">Updating.....</span> 
    </ProgressTemplate> 
</asp:UpdateProgress> 
<asp:DropDownList ID="dr1" AutoPostBack="true" OnSelectedIndexChanged="dr1_SelectedIndexChanged" runat="server" /> 
<asp:UpdatePanel ID="updpnl" runat="server"> 
    <ContentTemplate> 
     <asp:DropDownList ID="dr2" runat="server" /> 
     <asp:Label ID="lbl" runat="server" /> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="dr1" EventName="SelectedIndexChanged" /> 
    </Triggers> 
</asp:UpdatePanel> 
<asp:DropDownList ID="dr3" runat="server" /> 
</form> 

и мой отделенный код:

void Page_Load() 
     { 
      if (!IsPostBack) 
      { 
       java.Text = "<script language=\"JavaScript1.2\" type=\"text/javascript\">var sess = \"" + Session["username"] + "\";var user = \"" + Request.ServerVariables["LOGON_USER"].Replace("\\", "\\\\") + "\";</script>"; 
       dr1.Items.Clear(); 
       dr2.Items.Clear(); 
       dr3.Items.Clear(); 
       dr1.Items.Add(""); 
       dr1.Items.Add("A"); 
       dr1.Items.Add("B"); 
       dr1.Items.Add("C"); 
       dr1.Items.Add("D"); 
       dr3.Items.Add(""); 
       dr3.Items.Add("Allo"); 
       dr3.Items.Add("Bonjour"); 
       dr3.Items.Add("Ola"); 
      } 
     } 

     protected void dr1_SelectedIndexChanged(Object sender, EventArgs e) 
     { 
      System.Threading.Thread.Sleep(5000); 
      lbl.Text = DateTime.Now.ToString(); 
      dr2.Items.Clear(); 
      dr2.Items.Add(""); 
      for (int i = 1; i <= 4; i++) 
       dr2.Items.Add(dr1.SelectedValue + i); 
     } 

Я надеюсь, что кто-то может помочь мне

Спасибо

+3

Пожалуйста, избавиться от сна (5000); Это никогда не должно вводиться в производственный код. Вы намеренно замедляете это, не очень хорошая идея. –

ответ

0

Это, наконец, работал. После удаления кода и повторного добавления по-разному он работал.

Я также удалил dll и перестроил его. Кажется, это помогло.

2

Попробуйте modifythis линию
<asp:AsyncPostBackTrigger ControlID="dr1" EventName="SelectedIndexChanged" />

И удалить атрибут EventName="SelectedIndexChanged"

+0

Я просто попробовал, и он все еще умирает не работает – Olivier

0

Попробуйте обернув все в UpdatePanel, и установив UpdatePanel-х UpdateMode="Always"

Смежные вопросы