C# -a -Feld oder Eigenschaft mit dem Namen 'Zusammenfassung' wurde in der ausgewählten Datenquelle nicht gefunden

StackOverflow https://stackoverflow.com/questions/8848963

  •  27-10-2019
  •  | 
  •  

Frage

Ich habe Probleme, die Gridview zu binden, wenn eines der Tags im XML Nodelist fehlt. Ich erhalte unten Fehlermeldung:

Ein Feld oder eine Eigenschaft mit dem Namen "Zusammenfassung" wurde nicht in der ausgewählten Datenquelle gefunden.

Bitte helfen Sie mir, wie ich die fehlenden Werte während der Bindung umgehen kann, damit ich benutzerdefinierte Textnachricht anzeigen kann, z. B. "Keine Zusammenfassung verfügbar".

Ich verwende .NET Version 3.5 und binde die Gridview aus XML -Daten.

ASPX -Code:

            <asp:GridView ID="gvSystemX" runat="server" AutoGenerateColumns="False" AlternatingRowStyle-CssClass="even"
        CellPadding="4" Font-Names="Tahoma" Font-Size="Small" ForeColor="#333333" GridLines="None" EmptyDataText="Mayur">
        <RowStyle BackColor="#E3EAEB" />
        <Columns>
            <asp:BoundField HeaderText="TITLE" DataField="AZKTITLE" />
            <asp:BoundField HeaderText="DESCRIPTION" DataField="AZKSUMMARY" />
            <asp:BoundField HeaderText="SOURCE" DataField="AZKSOURCE" />
            <asp:BoundField HeaderText="DATABASE NAME" DataField="DREDBNAME" />
        </Columns>
        <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" />
        <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
        <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#7C6F57" />
        <AlternatingRowStyle CssClass="even"></AlternatingRowStyle>
    </asp:GridView>

Code hinter:

Im Antwortobjekt erhalte ich die XML -Daten ...

            XmlNamespaceManager nsMgr = new XmlNamespaceManager(response.NameTable);
            nsMgr.AddNamespace("autn", "http://schemas.autonomy.com/aci/");

            nodeList = response.SelectNodes("autnresponse/responsedata/autn:hit/autn:content/DOCUMENT", nsMgr);
            gvSystemX.DataSource = ConvertToDataTable(nodeList);
            gvSystemX.DataBind();
War es hilfreich?

Lösung

Dieser Fehler besteht darin, dass der Datarow des DataTable natürlich nicht die Spaltenzusammenfassung (AzkSummary) hat. Dies kann in Ihrer konvertiertem Methode gelöst werden. Ich gehe davon aus, dass Sie Spalte für alle vorhandenen Knoten erstellen.

Sie müssen alle 4 Spalten für jede Zeile erstellen, auch wenn sie in der XML -Datei nicht vorhanden ist. Wenn es nicht beendet ist, können Sie den gewünschten Wert hinzufügen, z. B. "Keine Zusammenfassung verfügbar".

Noch besser wäre es, ein Objekt mit 4 Eigenschaften zu implementieren und sie in die Liste zu setzen. Aber bleib beim DataTable, wenn es dir gefällt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top