У меня есть страница с заполнителем ASP, обернутая в панель обновления, я загружаю один пользовательский элемент управления с другим заполнителем, обернутым в панель обновления. Затем я загружаю этот новейший заполнитель с несколькими пользовательскими элементами управления, каждый из которых содержит Gridview, завернутый в панель обновления.
Данные в каждом Gridview основаны на данных в «предыдущих» Gridview, поэтому, когда пользователь редактирует строку, каскад изменений вниз по Gridview, вот где моя проблема. После нажатия кнопки сохранения ничего не происходит (все строки в базе данных обновляются правильно), пока я не нажму еще одну кнопку в любом месте страницы, после чего все изменения будут заметно обновлены в Gridviews.
Я перепробовал все, что мог придумать, чтобы исправить это, без конца играть с опциями и позициями панели обновления, вызывая дополнительное нажатие кнопки с помощью JavaScript и любого другого решения, которое я мог найти, которое казалось уместным, хотя ни одно не получило я ближе к тому месту, где я хочу быть.
Если мне удалось передать мои проблемы таким образом, чтобы кто-нибудь мог понять, что я был бы благодарен за понимание, пожалуйста, задавайте вопросы, если вы чувствуете, что я не описал что-то вразумительно.
Вот три уровня и страница / пользовательский контроль / пользовательский контроль:
Страница:
<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>
Второй пользовательский элемент управления загружен в заполнитель выше несколько раз:
<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()
Спасибо, Корв