Gridview ist keine Modifikation im inneren des UpdatePanel

Ich verstehe, dass dies ist ein sehr häufiges Problem, ich lese die Dokumentation auf das für Tage, und ich bin über zu ziehen, meine Haare über dieses Problem.

HINTERGRUND
Ich habe mehrere Gridviews innerhalb eines UpdatePanel. Was ist passiert, ist jemand importieren einer Excel-Tabelle, die ich benutze OpenXML um shread die Daten und speichern Sie in einem VB.NET datatable-Objekt. Ich habe dann laufen die ganzen Daten über eine benutzerdefinierte Gültigkeitsprüfung (basierend auf DB-Informationen) und dann spuckte die Ausnahmen (Fehler), die auftreten, in einem Gridview-Abhängigkeit die Ausnahme. die max Anzahl ist 4 Gridviews in einem UpdatePanel (jedes Gridview hat eine eigene Funktionalität). Es gibt zwei Gridviews, dass ich mit einem button eine Aktion mit den enthaltenen Daten in der Gridview. Diese beiden Schaltflächen befinden sich auch im Update-Panel, knapp unterhalb der entsprechenden Gridviews. Jeder Gridview ist verpackt in eine AJAX-widgets "Reduzierbare Palette" - Extender.

Nun, wenn der Benutzer auf die Schaltfläche klickt, ich habe ein click-Ereignis in der code-behind-wo nehme ich die Informationen, und je nach der Ausnahme, die aufgetreten ist, Update-oder Insert der DB. Ich Schleife über die Zeilen, und wenn kein Fehler Auftritt, nenne ich die datatable.ImportRow und übergeben Sie die aktuelle Zeile in meinem "Ready" - Tabelle. Ich benutze ein ScriptManager.RegisterStartupScript, um eine alert-box, damit Sie wissen, ob irgendwelche Fehler aufgetreten sind. Dann habe ich binden Sie erneut der Ausnahme-Tabelle und der "Bereit" - Tabelle. Ich habe versucht, nur das hinzufügen einer AsyncPostbackTrigger, habe ich versucht ganz einfach den Aufruf udpMain.Update() in den code hinter, und versucht, sowohl die Optionen zur Einstellung UpdatePanel ist "UpdateMode" - Eigenschaft auf "Immer" und "Bedingt".

HTML

    <asp:UpdatePanel ID="udpMain" runat="server" UpdateMode="Always">
<ContentTemplate>
    <asp:Panel ID="pnlOwnershipDetailsHead" runat="server" Visible="false">
                <div class="windHeader" style="cursor: pointer">
                    <asp:Label id="lblOwnershipDetails" runat="server">Ownership Exceptions</asp:Label>
                    <asp:ImageButton id="btnOwnershipHead" runat="server"/>
                </div>
              </asp:Panel>
               <asp:Panel ID="pnlOwnershipDetailsBody" runat="server" Visible="false" CssClass="pnl">
                <asp:GridView ID="gvOwnershipDetails" runat="server" CssClass="wind" CellPadding="5" AutoGenerateColumns="false">
                    <HeaderStyle CssClass="windHeader" />
                    <Columns>
                        <asp:BoundField DataField="Description" HeaderText="Description" />
                        <asp:BoundField DataField="Serial Number" HeaderText="Serial Number" />
                        <asp:BoundField DataField="Facility" HeaderText="Facility" />
                        <asp:BoundField DataField="Department" HeaderText="Department" />
                        <asp:BoundField DataField="EmpID" HeaderText="EmpID" />
                        <asp:BoundField DataField="Configuration" HeaderText="Config" />
                        <asp:BoundField DataField="Error" HeaderText="Errors" />
                        <asp:TemplateField>
                            <HeaderTemplate> 
                                <asp:CheckBox ID="chkHeader" ToolTip="Select All" runat="server" onclick="changeAllCheckBoxes(this)" />
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:CheckBox ID="chkItem" runat="server" ToolTip="Select this item" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
                    <asp:Button ID="btnOwnershipDetails" Text="Change Information" runat="server" CssClass="btn editBtn" />
                    <ajax:ConfirmButtonExtender ID="cbeOwnershipDetails" runat="server" TargetControlID="btnOwnershipDetails"
                        ConfirmText="Are you sure you would like to change the ownership information for the selected items?"
                        OnClientCancel="CancelClick"  />
               </asp:Panel>
</ContentTemplate>
    <asp:UpdatePanel>

CODE HINTER

 Protected Sub btnOwnershipDetails_Click(sender As Object, e As System.EventArgs) Handles btnOwnershipDetails.Click
        Dim importdata As New ImportData
        Dim ownershipdt As Data.DataTable = Session("ownershipdt")
        Dim finalimportdt As Data.DataTable = Session("finalimportdt")
        Dim existsError As Boolean = False

        For Each Row As Data.DataRow In ownershipdt.Rows
            Dim i As Integer = 0
            Dim cb As CheckBox = CType(gvOwnershipDetails.Rows(i).Cells(7).Controls(1), CheckBox)
            If cb.Checked Then
                If importdata.CheckEmpExists(Row("EmpID").ToString) And importdata.CheckSiteExists(Row("Facility").ToString) And importdata.CheckDeptExists(Row("Department").ToString) Then
                    importdata.UpdateDBOwnership(Row("Serial Number").ToString, ClientInfo.GetEmpID(Row("EmpID").ToString), ClientInfo.GetSiteID(Row("Facility").ToString), ClientInfo.GetDeptID(Row("Department").ToString), _
                                                Row("Description").ToString, Row("Configuration").ToString, portalUser.EmployeeText)

                    finalimportdt.ImportRow(Row)
                Else
                    existsError = True
                End If
            End If
            i += 1
        Next
        If existsError = False Then 'Show alert box
            ScriptManager.RegisterStartupScript(udpMain, udpMain.GetType(), "alert", "alert('You have changed the ownership information for the selected rows.')", True)
        Else
            ScriptManager.RegisterStartupScript(udpMain, udpMain.GetType(), "alert", "alert('There was an issue changing ownership to all of the selected rows.')", True)
        End If
        bindGV(gvOwnershipDetails, ownershipdt)
        bindGV(gvImportDetails, finalimportdt)
        'udpMain.Update()
        Session("ownershipdt") = ownershipdt
        Session("finalimportdt") = finalimportdt
        btnEmail.Enabled = True
    End Sub
  • entfernen Sie das update-panel zu sehen, ob es funktioniert, und wenn nicht, welche Fehlermeldung hast du bekommen.
  • Kein Fehler, aber es hat auch nicht funktioniert. Ohne UpdatePanel, für den Gridviews zu aktualisieren, ich habe das senden einer vollständigen postback richtig?
  • Halten Sie den update-panel aus deinem ersten code, bis Sie Ihre wirkliche Problem hier - der Titel jetzt falsch ist, ist das UpdatePanel ist nicht Ihr Problem
  • Wie gesagt, ich habe entfernt das UpdatePanel. Alles ausgeführt, ohne Fehler, aber das Gridview ist noch nicht aktualisiert. Ich verstehe nicht, wie der Titel ist falsch. Ich kann diese ganzen Tag arbeiten, ohne UpdatePanel und vollständige postbacks. Das Problem ist, dass ich nicht bekommen kann es richtig funktionieren in UpdatePanel mit partiellen postbacks.
Schreibe einen Kommentar