这应该是一个非常简单的事情与更新面板,但我有麻烦。 我想更新vendorConboBox选择更改时的updatePanelSelectedVendors,gridview页面以及该面板中的删除按钮。我根本不想刷新供应商的combox,但我不想做完整的回复。
问题是异步回发只发生vendorSboBox的第一次选择更改。我在此用户控件中有与其他更新面板类似的面板。如何将它们全部链接在一起,只更新我设置的触发器。
<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> <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控件?
答案 0 :(得分:4)
如果您不想刷新'vendorsComboBox',那么首先不需要它在UpdatePanel中。将其添加为“updatePanelSelectedVendors”的触发器足以更新该UpdatePanel。
就页面上有多个UpdatePanel而言,你似乎正在做最重要的事情,那就是确保他们有UpdateMode="Conditional"
,否则他们都会在任何人更新时更新。
无论如何,尝试删除'updatePanelVendorsSelect'面板,因为它根本不需要,以及任何其他包装不需要更改的内容的面板,并看看你是如何继续的。它可以解决你的问题,它可能会有所帮助,让我知道。