我在使用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以允许分页正常运行?
答案 0 :(得分: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;
}
protected void btSearch_Click(object sender,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();
}
我怀疑我有一个太多的绑定踢...因为你可以从我的代码probalby告诉,这是我的新领域所以对虐待温柔!
答案 1 :(得分:0)
好的,我已经阅读了一些我需要在数据源中抛出的地方,所以我现在得到了以下代码
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSourceID = "lqPackWeights";
}
现在,当我构建页面时,它工作正常,但是当我点击x的第2页时,我收到了这个令人讨厌的小消息:
服务器错误。此提供程序仅对返回包含所有标识列的实体或投影的有序查询支持Skip(),其中查询是单表(非连接)查询,或者是Distinct,Except,Intersect或Union(不是Concat)操作。
那是什么呢?!
答案 2 :(得分:0)
绑定实际上很好。最后通过添加一个主键(我真的应该首先实现它!)来对它进行排序。
因此,如果有人正在阅读此内容,无法通过objectdatasource获取他们的gridview页面,请确保您拥有主键!!!