У меня есть страница с владельцем ASP Place, завернутая в панель обновления на нем, я загружаю один элемент управления пользователя с другим держателем места, завернутым в панель обновления на нем. Затем я загружаю этот новейший Place Holder с несколькими элементами управления пользователя, каждый из которых содержит Gridview, завернутый в панель обновления.Как обновить несколько Gridviews на нескольких элементах User Controls, а Gridviews и User Controls находятся внутри панелей обновлений?
Данные в каждом Gridview основаны на данных в «предыдущих» Gridviews, поэтому, когда пользователь редактирует строку, изменения каскадом вниз по Gridviews, вот где моя проблема. После нажатия кнопки сохранения ничего заметного не происходит (все строки в базе данных обновляются правильно), пока я не нажму другую кнопку в любом месте страницы, после чего все изменения будут заметно обновлены в Gridviews.
Я пробовал все, что я могу придумать, чтобы исправить это, без конца играть с параметрами и позициями панели обновления, вызывая дополнительную кнопку с помощью JavaScript и любое другое решение, которое я мог найти, что казалось актуальным, хотя ни у кого нет приблизил меня к тому, где я хочу быть.
Если мне удалось передать свои проблемы таким образом, чтобы каждый мог понять, что я был бы благодарен за понимание, задайте вопросы, если вы чувствуете, что я не описал что-то внятно.
Вот три уровня и страница/управление пользователем/UserControl:
Страница:
<div id="divCustomerProductInput">
<asp:UpdatePanel ID="udpSalesOrders" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:PlaceHolder ID="plhCsCustomerproductInput" runat="server"></asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
</div>
Первый контроль пользователя загружается в заполнителе выше:
<asp:UpdatePanel ID="udpSalesOrders" runat="server" UpdateMode="Always" >
<ContentTemplate>
<asp:PlaceHolder runat="server" ID="plhProductionProcess"></asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
Control Второй пользователь загрузит в заполнитель более много раз:
<asp:UpdatePanel ID="udpPPI" runat="server" UpdateMode="Always">
<ContentTemplate>
<%-- MANUFACTURE--%>
<asp:GridView ID="gdvProductionProcessIngredients" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:Label ID="lblId" runat="server" Text='<%# Eval("Id") %>'></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ingredient Description" ItemStyle-Width="21%" ControlStyle-Width="95%">
<ItemTemplate>
<asp:Label ID="txtIngredientDescription" runat="server" Text='<%# Eval("IngredientDescription") %>'></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Ingredient Code" ItemStyle-Width="14%" ControlStyle-Width="95%">
<ItemTemplate>
<asp:Label ID="txtIngredientCode" runat="server" Text='<%# Eval("RmId") %>'></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="From" ItemStyle-Width="10%" ControlStyle-Width="95%">
<ItemTemplate>
<asp:Label ID="txtParentDepartment" runat="server" Text='<%# Eval("ParentDepartment") %>'></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity (%)" ItemStyle-Width="10%" ControlStyle-Width="95%">
<ItemTemplate>
<asp:TextBox ID="txtQuantityKg" runat="server" Text='<%# Eval("OldestAncestorQuantityPercent") %>'
ForeColor="Black"></asp:TextBox></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Input Cost/Kg (£)" ItemStyle-Width="13%" ControlStyle-Width="95%">
<ItemTemplate>
<asp:Label ID="lblCost" runat="server" Text='<%# Eval("InputCostKg") %>'></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Yield (%)" ItemStyle-Width="10%" ControlStyle-Width="95%">
<ItemTemplate>
<asp:TextBox ID="txtYield" runat="server" Text='<%# Eval("Yield") %>' ForeColor="Black"></asp:TextBox></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Output Cost/Kg (£)" ItemStyle-Width="14%" ControlStyle-Width="95%">
<ItemTemplate>
<asp:Label ID="lblCostPerKg" runat="server" Text='<%# Eval("OutputCostKg") %>'></asp:Label></ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ItemStyle-Width="6%" ControlStyle-Width="95%" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:Button ID="btnDeleteIngredient" CommandName="REMOVE" CommandArgument='<%# Eval("Id") %>'
CssClass="btn danger hover" runat="server" Text="Remove" /></ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
Хорошо, вот связывание и обновление кода:
Dim myCsProductProductionProcessIngredients As New v2.Model.CsProductProductionProcessIngredientCollection
myCsProductProductionProcessIngredients.LoadByPPPId(_ProductProductionProcessId)
Me.gdvProductionProcessIngredients.DataSource = myCsProductProductionProcessIngredients
Me.gdvProductionProcessIngredients.DataBind()
Me.udpPPI.Update()
Спасибо, Korv
Пожалуйста, отправьте несколько примеров кода. –