0

我在用 gridview 整理分页场景时遇到了一点麻烦,即我无法让血腥的东西显示页面、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 以允许分页正确操作?

4

3 回答 3

0

这就是事情变得有趣的地方!我正在使用 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;
}

受保护的无效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();
    }

我怀疑我有太多的束缚......正如你可能从我的代码中看出的那样,这对我来说是一个新领域,所以对虐待要温柔!

于 2009-11-26T16:47:15.397 回答
0

好的,我已经阅读了一些我需要在数据源中抛出的地方,所以我现在得到了以下代码

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

现在,当我构建页面时,它工作正常,但是当我点击 x 的第 2 页时,我收到了这条讨厌的小消息:

“/onlineReportingFUNCTIONING”应用程序中的服务器错误。

此提供程序仅在返回实体或包含所有标识列的投影的有序查询上支持 Skip(),其中查询是单表(非连接)查询,或者是 Distinct、Except、Intersect 或 Union(非 Concat)手术。

那是怎么回事?!

于 2009-11-26T17:22:59.257 回答
0

绑定其实很好。这最终通过添加主键进行排序(我真的应该首先实现!)

因此,如果有人正在阅读此内容,则无法让他们的 gridview 通过 objectdatasource 进行分页,请确保您有主键!!!

于 2009-12-03T16:59:22.787 回答