我在1.xml文件中:
<Root>
<Node PCode="1" FieldName="FulName" Caption="F&LName" FieldValue="John Cary" FieldType="1" />
<Node PCode="1" FieldName="Funct" Caption="MonthWork" FieldValue="29 days " FieldType="2" />
<Node PCode="1" FieldName="FType" Caption="Work_Type" FieldValue="daily " FieldType="2" />
<Node PCode="1" FieldName="FTime" Caption="ExtraTime" FieldValue="0' : 90 " FieldType="2" />
<Node PCode="1" FieldName="HTime" Caption="HolidTime" FieldValue="30' : 82" FieldType="2" />
</Root>
在C#后面的代码中:
DataSet ds = new DataSet();
ds.ReadXml(@"d:\1.xml");
DataTable dt = ds.Tables[0];
functionNodes.DataSource = ds.Tables[0].Select("FieldType = '2'");
functionNodes.DataBind();
并在aspx文件中:
<asp:DataList ID="deductionsNodes" runat="server">
<ItemTemplate>
<asp:Label CssClass="itemTopics" runat="server" Text='<%# (Eval("FieldType").Equals("4")) ? Eval("Caption") : "" %>'></asp:Label> **Error**
<asp:Label CssClass="itemValues" runat="server" Text='<%# (Eval("FieldType").Equals("4")) ? Eval("FieldValue") : "" %>'></asp:Label>
</ItemTemplate>
</asp:DataList>
当运行时,当光标到达运行
DataBind()
方法时,此错误在aspx代码的第一个标签标记中发生,并说:DataBinding:'System.Data.DataRow'不包含名称为'Caption'的属性。
我需要使用
FieldType=2
过滤行以在DataList中使用。注意:当我删除
.Select("FieldType = '2'")
方法并仅使用ds.Tables[0];
时,返回所有FieldTypes的所有行,没有任何错误,但返回所有行。
最佳答案
DataSource希望在绑定到的集合周围有某种形式的DataView。似乎很难将其交给DataRow的原始数组。
一种选择是使用DataTable的DefaultView并利用RowFilter功能:
DataSet ds = new DataSet();
ds.ReadXml(@"d:\1.xml");
DataTable dt = ds.Tables[0];
dt.DefaultView.RowFilter = "FieldType = '2'";
functionNodes.DataSource = dt;
functionNodes.DataBind();
我认为您发布的.aspx对于数据绑定是错误的。在按FieldType = 2进行过滤时,它仅显示FieldType = 4的项目。这将始终是空的。
关于c# - 数据绑定(bind):“System.Data.DataRow”不包含名称为“标题”的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23573769/