c# -'summary'という名前のフィールドまたはプロパティは、選択したデータソースには見つかりませんでした
-
27-10-2019 - |
質問
XMLノデリストのタグの1つが欠落している場合、GridViewをバインドする問題に直面しています。エラーメッセージを下回っています:
「要約」という名前のフィールドまたはプロパティは、選択したデータソースには見つかりませんでした。
バインディング中に欠損値を処理する方法を誰かが助けてください。
.NETバージョン3.5を使用しており、XMLデータからGridViewをバインディングしています。
ASPXコード:
<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>
背後のコード:
応答オブジェクトでは、XMLデータを取得しています...
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();
解決
このエラーは、DatatableのDatarowにはもちろん列の概要(Azksummary)がないことです。これは、変換可能な方法で解決できます。そこには、既存のすべてのノードの列を作成していると思います。
XMLファイルに存在しなくても、すべての行に4列すべてを作成する必要があります。終了しない場合は、「要約なし」など、必要な値を追加できます。
さらに良いことに、4つのプロパティを備えたオブジェクトを実装し、リストに入れます。しかし、あなたがそれが好きなら、データテーブルに固執してください。
所属していません StackOverflow