我有自定义SPlist,其中包含一些我希望绑定到可视Web部件中的转发器的字段。我不能使用SPDataSource,因为我必须在绑定之前用列表做一些自定义的东西。
如何以这种方式绑定自定义列?当我在自定义列上使用Eval时出现错误
如果我使用数据源进行测试,它会再次使用Eval(“HoursOfOperation”):
<SharePoint:SPDataSource runat="server" ID="data" DataSourceMode="List"
SelectCommand="<Where><Eq><FieldRef Name='CBC'/><Value Type='Boolean'>0</Value></Eq></Where>">
<SelectParameters>
<asp:Parameter Name="WebUrl" DefaultValue="/" />
<asp:Parameter Name="ListName" DefaultValue="Locations" />
</SelectParameters>
</SharePoint:SPDataSource>
但是,如果我使用以下代码,则会收到错误 DataBinding:'Microsoft.SharePoint.SPListItem'不包含名称为'HoursOfOperation'的属性。
SPSite site = SPContext.Current.Site;
SPWeb web = site.RootWeb;
SPQuery query = new SPQuery();
query.ViewFieldsOnly = true;
query.Query = string.Concat(
"<Where><Eq>",
"<FieldRef Name='CBC'/>",
"<Value Type='Boolean'>0</Value>",
"</Eq></Where>"
);
SPList list = web.Lists["Locations"];
SPListItemCollection items = list.GetItems(query);
rp.DataSource = list;
rp.DataBind();
我在这里缺少什么?
答案 0 :(得分:1)
好的,自己找到了:
对于非索引属性,您需要将dataitem强制转换为SPListItem并按名称获取属性。
<%# ((SPListItem)Container.DataItem)["HoursOfOperation"] %>