Sharepoint 2010数据绑定与列表自定义列

时间:2010-11-22 01:39:28

标签: sharepoint sharepoint-2010

我有自定义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();

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

好的,自己找到了:

对于非索引属性,您需要将dataitem强制转换为SPListItem并按名称获取属性。

<%# ((SPListItem)Container.DataItem)["HoursOfOperation"] %>