PageIndExchanging targetInvocationExeption
-
05-07-2019 - |
문제
나는 그리드 뷰로 페이징 시나리오를 분류하는 데 약간의 어려움이 있습니다.
다음 그리드보기 코드가 있습니다
<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
바인딩은 실제로 괜찮 았습니다. 이것은 기본 키를 추가하여 마침내 분류되었습니다 (처음에 실제로 묵시해야합니다!)
따라서 누군가이 글을 읽고 있다면 ObjectDatasource를 통해 GridView를 페이지로 가져갈 수 없습니다. 기본 키가 있는지 확인하십시오 !!!
다른 팁
이것은 일이 흥미로워지는 곳입니다! 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 (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();
}
나는 당신이 내 코드에서 말할 수 있듯이, 이것은 나에게 새로운 영역이므로 학대에 부드럽게 되라!
자, 데이터 소스에 버려야 할 몇 가지 장소를 읽었으므로 이제 다음 코드를 받았습니다.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSourceID = "lqPackWeights";
}
이제 페이지를 만들 때 잘 작동하지만 X의 2 페이지를 누르면이 불쾌한 작은 메시지를받습니다.
'/onlineReportingFunctioning'응용 프로그램의 서버 오류.
이 공급자는 쿼리가 단일 테이블 (비 조인) 쿼리이거나, 교차 또는 유니언 (concat)을 제외하고는 쿼리가 단일 테이블 (비 조인) 쿼리 인 모든 ID 열이 포함 된 순서대로 순서대로 반환 엔티티 또는 예측을 지원합니다. 작업.
그때는 무엇입니까?!