PageindexChanging TargetInvocationExeption - PullRequest
       29

PageindexChanging TargetInvocationExeption

0 голосов
/ 26 ноября 2009

У меня возникли небольшие проблемы с сортировкой сценария подкачки с помощью сетки, т. Е. Я не могу заставить кровавую вещь показать страницу, 2, 3, 4 и т. Д.

У меня есть следующий код вида сетки

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
               style="z-index: 1; left: 20px; top: 440px; position: absolute; height: 133px; " 
        AllowPaging="True" AllowSorting="True" Font-Size="Small" 

        PageSize="2" onpageindexchanging="GridView1_PageIndexChanging">
        <Columns>

со следующим

  protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}

Теперь я получаю сообщение «Исключение TargetinvocationException было обработано кодом пользователя».

Будучи новичком, это выходит за рамки моих нынешних возможностей и несколько смутило меня. Как правильно связать мой gridview, чтобы обеспечить правильную работу подкачки?

Ответы [ 3 ]

0 голосов
/ 26 ноября 2009

Хорошо, я прочитал несколько мест, которые мне нужно добавить в источник данных, поэтому у меня теперь есть следующий код

 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataSourceID = "lqPackWeights";
}

Теперь, когда я создаю страницу, она работает нормально, но когда я нажимаю на страницу 2 из x, я получаю это маленькое неприятное сообщение:

Ошибка сервера в приложении '/ onlineReportingFUNCTIONING'.

Этот провайдер поддерживает Skip () только для упорядоченных запросов, возвращающих сущности или проекции, которые содержат все столбцы идентификаторов, где запрос является запросом с одной таблицей (без объединения) или является Distinct, Except, Intersect или Union ( не согласен) операция.

Что это тогда?!

0 голосов
/ 03 декабря 2009

На самом деле переплет был в порядке. В конечном итоге это было отсортировано путем добавления первичного ключа (который я действительно должен был реализовать в первую очередь!)

Так что, если кто-то читает это, не может получить свое представление сетки на странице через источник данных объекта, убедитесь, что у вас есть первичный ключ !!!

0 голосов
/ 26 ноября 2009

это то, где вещи становятся интересными! Я использую источник данных linq:

<asp:LinqDataSource ID="**lqPackWeights**" runat="server"
        ContextTypeName="ORWeightsDataClassesDataContext" 
        Select="new (UnitId, UnitDescription, PackagingTypeCode, UnitWeight, WeightUnitCode, RecycledContent, IsBiodegradable, Recyclability, RevisionSourceCode, RevisionDate, ExtendedMaterialName, MaterialText, WeightStatus, ProductPercentage, UnitUserfield1, UnitUserfield2, IDDesc, MaterialLevel)" 
        TableName="tblOnlineReportingCOMPLETEWeights" Where="IDDesc == @IDDesc">
    </asp:LinqDataSource>

lqPackWeights генерируется через это:

private object GetMaterialData(string MemberKey, string MaterialType, string MaterialLevel, int Count)
{
    ORWeightsDataClassesDataContext db = new ORWeightsDataClassesDataContext();
    var query = db.tblOnlineReportingCOMPLETEWeights
                .Where(x => x.MaterialLevel == MaterialLevel && x.MaterialText == MaterialType && x.MemberId == MemberKey)
                .OrderByDescending(x => x.ProductPercentage).Take(Count);
    return query;
}

защищенный void btSearch_Click (отправитель объекта, EventArgs e) {

    lqPackWeights.WhereParameters.Clear();
    ControlParameter cp = new ControlParameter();
    cp.Type = TypeCode.String;


    if (radBuyer.Checked)
    {
        cp.ControlID = "ddlProd";
        cp.PropertyName = "SelectedValue";
        cp.Name = "IDDesc";
        lqPackWeights.WhereParameters.Add(cp);
        GridView1.DataSourceID = "lqPackWeights";
        GridView1.DataBind();
    }

    else if (radProd.Checked)
    {
        cp.ControlID = "tbxProdAC";
        cp.PropertyName = "Text";
        cp.Name = "IDDesc";
        lqPackWeights.WhereParameters.Add(cp);
        GridView1.DataSourceID = "lqPackWeights";
        GridView1.DataBind();
    }

Я подозреваю, что у меня слишком много привязок ... Как вы можете, вероятно, сказать из моего кода, это новая территория для меня, так что будьте осторожны со злоупотреблением!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...