2011-05-02 7 views
0

Sharepoint 2010 비주얼 웹 파트를 개발 중이고 여기에서 LinqDataSource를 사용하여 GridView에서 페이징 및 정렬을 처리하려고합니다. spmetal을 사용하여 datacontext 및 엔터티 개체를 만들었습니다.Linq와 Linq를 사용하여 페이징 공유 지점을

내 마크 업 :

<%@ 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> 

내 코드 : 이제이 내 코드입니다 내가이 얻을 사이트에서는 WebPart를 보려고하면

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() 
       }; 


} 

이제 문제는 오류 : 'System.Int32'형식의 식은 반환 형식 'System.Object'에 사용할 수 없습니다.

이 오류가 사라지는 표보기에서 페이징을 먹었습니다.

왜 이런 일이 발생하는지 알고 있습니까?

나는 어떤 도움도 감사 할 것입니다.

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.Arguments.SortExpression을 처리해야

답변

3

은 나를 위해 다음과 같은 해결책은 도움이되었습니다.