Сетка Привязка Проблема при использовании List () - PullRequest
0 голосов
/ 18 сентября 2011

.aspx:

 <asp:GridView ID="gvFirst" runat="server" AutoGenerateColumns="false" 
        AllowPaging="true" 
        ondatabound="gvFirst_DataBound" >
        <Columns>
            <asp:BoundField DataField="ID" HeaderText="ProductID"/>
            <asp:BoundField DataField="Name" HeaderText="ProductName" />
        </Columns>
        <PagerTemplate>
            <asp:Panel ID="pnlPager" runat="server">
            </asp:Panel>
        </PagerTemplate>
    </asp:GridView>

.cs:

 public class Productinformation
    {
     public int PID
     {
         get;
         set;
     }
     public string PName
     {
         get;
         set;
     }
    }
       using (NorthWindDataContext _NorthWindDataContext = new NorthWindDataContext())
        {
            Proinfo = new List<Productinformation>();
            Proinfo = (from p in _NorthWindDataContext.Products
                       select new Productinformation
                       {
                           PID = p.ProductID,
                           PName = p.ProductName,
                       }).ToList();

            gvFirst.DataSource =  Proinfo.Take(PageSize) ;
            gvFirst.DataBind();
        }

Proinfo объявлена ​​глобально.Теперь, когда я запускаю этот код, он показывает мне следующую ошибку:

источник данных не поддерживает подкачку данных на стороне сервера

Если я использую переменную типа varтогда это работает, но мы не можем объявить переменную типа var глобально, поэтому, если я ее использовал, то мне приходится каждый раз вызывать этот метод в подкачке.и я не хочу использовать Objectdatasource.

Ответы [ 2 ]

1 голос
/ 18 сентября 2011

Если вы глобально объявляете Proinfo как ICollection

private ICollection<Productinformation> Proinfo = null

Затем, затем вы используете метод .Take, вы получаете результат как перечислимое, которое не поддерживает подкачку, поэтому вам нужно преобразовать его в список, который наследуется от ICollection.

gvFirst.DataSource =  Proinfo.Take(PageSize).ToList();
1 голос
/ 18 сентября 2011

Вы должны вернуть список gvFirst, используя метод ToList(). Итак, попробуйте это:

gvFirst.DataSource =  Proinfo.Take(PageSize).ToList();

Объяснение

Поскольку в gvFirst вы задаете свойство AllowPaging="true", подкачка может использоваться с любым объектом источника данных, который реализует интерфейс ICollection.

ProInfo.Take(PageSize) возвращает IEnumerable, и поэтому вам нужно вызвать метод ToList().

...