使用LinqDataSource和linq对sharepoint进行分页



我正在开发一个Sharepoint 2010可视化web部件,我正在尝试使用LinqDataSource来处理GridView中的分页和排序。我用spmetal制作了数据上下文和实体对象。现在这是我的代码:

my mark up:

<%@ Register TagPrefix="asp" Namespace="System.Web.UI.WebControls" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<asp:LinqDataSource runat="server" ID="LinqDataSource1" OnSelecting="MySelecting" />
<asp:GridView ID="GridView1" runat="server"  AllowPaging="True" PageSize="3" 
    AutoGenerateColumns="False" DataSourceID="LinqDataSource1" 
    EnableModelValidation="True">
    <Columns>
        <asp:BoundField DataField="title" HeaderText="Title" />
    </Columns>
</asp:GridView>

和我的代码

protected void MySelecting(object sender, LinqDataSourceSelectEventArgs e)
{

    TestEntitiesDataContext dc = new TestEntitiesDataContext("http://sp/sites/test");
    e.Result = from item in dc.TestList
               select new
                 {
                     title = item.Title,
                     numberField = item.NumberField.ToString()
                 };

}

现在的问题是,当我试图查看网站上的web部件,我得到这个错误: System类型的表达式。Int32'不能用于返回类型'System '。对象的

当我在网格视图上禁用分页时,此错误消失。

你知道为什么会这样吗?

我很感激你的帮助。

以下工作对我有帮助:

LinqDataSource1.AutoPage = false;
LinqDataSource1.AutoSort = false;
在MySelecting:

e.Result = [your nice LINQ expression].Skip(e.Arguments.StartRowIndex).Take(e.Arguments.MaximumRows);
e.Arguments.TotalRowCount = [your nice LINQ expression].Count();

如果你需要排序,你也应该处理e.s arguments . sortexpression

相关内容

  • 没有找到相关文章

最新更新