2009-11-19 40 views
2

這對於更新面板應該是一件非常簡單的事情,但我遇到了麻煩。 我想更新vendorComboBox選擇更改,gridview頁面和該面板中的刪除按鈕上的updatePanelSelectedVendors。我根本不想刷新供應商的combox,但我不想做一個完整的帖子。更新面板和局部呈現以及AsyncPostBackTriggers僅在第一次使用AjaxControlToolkit時觸發:組合框

問題是,異步回發只發生了vendorComboBox的第一次選擇更改。我在此用戶控件中使用與其他更新面板相似的面板。我如何將它們全部鏈接在一起,只更新我設置的觸發器。

<div class="containerBox vendorsSelectBox"> 
    <asp:Label ID="lblVendors" runat="server" EnableViewState="false" AssociatedControlID="vendorsComboBox" CssClass="labelHeader" Text="Vendors" /> 
    <br /> 
    <asp:UpdatePanel ID="updatePanelVendorsSelect" runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional"> 
     <ContentTemplate> 
      <ajaxToolkit:ComboBox ID="vendorsComboBox" runat="server" 
          DataTextField="Name" 
          DataValueField="VendorID" 
          AutoPostBack="true" 
          AutoCompleteMode="SuggestAppend" 
          DropDownStyle="DropDownList" 
          CssClass="CustomComboBoxStyle" 
          CaseSensitive="false" 
          AppendDataBoundItems="false" 
          onselectedindexchanged="vendorsComboBox_SelectedIndexChanged"> 
      </ajaxToolkit:ComboBox> 
    </ContentTemplate> 
    </asp:UpdatePanel> 
</div> 
<asp:Panel ID="panelSelectedVendors" runat="server" CssClass="containerBox selectedFranchiseBox">    
    <label class="labelHeader">Selected Vendors</label>&nbsp;&nbsp;&nbsp;<br /> 
    <asp:UpdatePanel ID="updatePanelSelectedVendors" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional"> 
     <Triggers> 
      <asp:AsyncPostBackTrigger ControlID="vendorsComboBox" EventName="SelectedIndexChanged" /> 
     </Triggers> 
     <ContentTemplate>    
       <asp:GridView ID="selectedVendorsList" runat="server" 
        AllowPaging="True" 
        Width="250" 
        DataKeyNames="VendorID" AutoGenerateColumns="False" SkinID="gridViewSkin" 
        onrowdatabound="selectedVendorsList_RowDataBound" 
        onpageindexchanging="selectedVendorsList_PageIndexChanging">       
        <Columns> 
         <asp:TemplateField HeaderText="Remove?" ItemStyle-Width="10"> 
          <ItemTemplate> 
           <asp:CheckBox ID="checkBoxSelect" runat="server" /> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
        </Columns> 
       </asp:GridView> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
    <br />    
    <asp:Button ID="buttonDeleteSelectedVendor" runat="server" 
       Text="Delete Selected Vendor" EnableViewState="false" 
       SkinID="button" style="display:none; float:left; width:150px;" 
       onclick="buttonDeleteSelectedVendor_Click" /> 
    <asp:Button ID="buttonClearSelectedVendors" runat="server" 
       Text="Delete All" SkinID="button" style="float:right; margin-right:25px;" 
       Visible="false" 
     onclick="buttonClearSelectedVendors_Click" /> 
</asp:Panel> 

編輯:我將vendorsComboBox更改爲常規DropDownList和部分職位後備工作我期望的方式。爲什麼不用ComboBox控件?

回答

4

如果您不想刷新'vendorsComboBox',那麼首先不需要它在UpdatePanel中。將它作爲觸發器添加到'updatePanelSelectedVendors'足以更新該UpdatePanel。

就頁面上的多個UpdatePanel而言,您似乎正在做最重要的事情,那就是確保它們有UpdateMode="Conditional",否則當它們中的任何一個都更新時它們都會更新。

無論如何,請嘗試刪除'updatePanelVendorsSelect'面板,因爲它根本沒有必要,而其他所有包裝內容的應用程序都不需要更改,並查看您的工作方式。它可能會解決你的問題,它可能會稍微幫助,讓我知道。

+0

該問題似乎與ajax控件工具包ComboBox有關。我做了一個編輯指出。謝謝你的回答,證實了我認爲的關於更新面板的真實性,並指出我在正確的方向(爲此我給了一個投票) – Aligned 2009-11-20 21:06:25

+0

不知道爲什麼組合框不能工作 - 從未使用過他們。但有一件事:在你的編輯中,你會說「......部分後期工作......」 - 它仍然是Asp.Net AJAX的完整回傳。不過,這只是部分重新渲染*頁面*。 – 2009-11-22 23:57:07

相關問題