2013-07-04 2 views
1

У меня возникают проблемы с динамическим добавлением элементов управления внутри панели обновлений с частичной обратной связью. Я динамически генерирую LinkButton в коде позади и устанавливаю триггер, но когда я запускаю их, они полностью переносятся, даже LinkButton событие не дозвонились, когда я огонь them.They помещены в 'divPageNumber'Полная обратная передача, вызванная LinkButton внутри UpdatePanel

* .aspx:

</asp:DataList> 
       <table style="width: 100%"> 
        <tr style="width: 10%"> 
         <td> 
          <asp:LinkButton ID="lnkPrevious" runat="server" Font-Bold="True" 
           NavigateUrl="~/Default.aspx" OnClick="lnkPrevious_Click" Width="100px">&lt;&lt;صفحه قبل</asp:LinkButton> 
         </td> 
         <td style="width: 80%"> 
          <div id="divPageNumber" dir="rtl" runat="server"> 
          </div> 
         </td> 
         <td style="width: 10%"> 
          <asp:LinkButton ID="lnkNext" runat="server" Font-Bold="True" 
           NavigateUrl="~/Default.aspx" OnClick="lnkNext_Click" Width="80px">صفحه بعد&gt;&gt;</asp:LinkButton> 
         </td> 
        </tr> 
       </table> 
      </ContentTemplate> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton1" EventName="Command"></asp:AsyncPostBackTrigger> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton2" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton3" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton4" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton5" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton6" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton7" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton0" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="btnSearchHead" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="LinkButton8" EventName="Command" /> 
       <asp:AsyncPostBackTrigger ControlID="lnkNext" EventName="Click" /> 
       <asp:AsyncPostBackTrigger ControlID="lnkPrevious" EventName="Click" />     
      </Triggers> 

     </asp:UpdatePanel> 

и * .cs:

LinkButton btnPage; 
      for (int i = 1; i <= objPagedDataSource.PageCount; i++) 
      { 
       btnPage = new LinkButton();      
       btnPage.ID = "btnPage" + i.ToString();      
       if (i == GetCurrentPageNumber + 1) 
        btnPage.Font.Bold = true; 
       btnPage.Width = 10; 
       btnPage.Style["margin-right"] = "2px"; 
       btnPage.Style["margin-left"] = "2px"; 
       btnPage.Text = i.ToString(); 

       if (brand != "" && brand != null) 
        btnPage.PostBackUrl = "Default.aspx?brand=" + brand + "&Page=" + i.ToString(); 
       else if (model != "" && model != null) 
        btnPage.PostBackUrl = "Default.aspx?model=" + model + "&Page=" + i.ToString(); 
       else 
        btnPage.PostBackUrl = "Default.aspx?Page=" + i.ToString(); 

       divPageNumber.Controls.Add(btnPage); 

       LinkButton lb = (LinkButton)divPageNumber.FindControl("btnPage" + i.ToString()); 
       lb.Click += new EventHandler(lnkdel_OnClick); 

       //Creates a new async trigger 
       AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); 
       trigger.ControlID = lb.UniqueID; 
       trigger.EventName = "Click"; 
       UpdatePanel1.Triggers.Add(trigger); 

       ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lb); 
      } 
      UpdatePanel1.Update(); 

protected void lnkdel_OnClick(object sender, EventArgs e) 
    { 

    } 
    protected void lnkPrevious_Click(object sender, EventArgs e) 
    { 
     //GetCurrentPageNumber -= 1; 
     //BindDataToRepeter(); 
     Response.Redirect("Default.aspx?Page=" + (Convert.ToInt32(Page.Request["Page"]) - 1).ToString()); 
    } 
    protected void lnkNext_Click(object sender, EventArgs e) 
    { 
     //GetCurrentPageNumber += 1; 
     //BindDataToRepeter(); 

     Response.Redirect("Default.aspx?Page=" + (Convert.ToInt32(Page.Request["Page"]) + 1).ToString()); 
    } 

'lnkNext' и 'lnkPrevious' статически добавлены и работают. но «lnkdel_OnClick» не работает.

Что я делаю?

благодаря

+0

Насколько полный постбэк обеспокоен, что это дизайн. Все события жизненного цикла страницы все еще выполняются даже во время частичной обратной передачи. Больше информации на, http://encosia.com/are-you-making-these-3-common-aspnet-ajax-mistakes/ – Saurabh

+0

Я не понимаю эту статью, вы можете помочь мне и исправить мой код. – teardrop

+0

Когда вы говорите полную обратную передачу, вы имеете в виду, что вы видите, что происходит обратная передача (страница загружается повторно) или вы не видите, что происходит обратная передача, но все события жизненного цикла страницы увольняются? – Saurabh

ответ