PageindexChanging TargetInvocationExeption
У меня возникли небольшие проблемы с сортировкой сценария подкачки с помощью сетки, т. Е. Я не могу заставить кровавую вещь показать страницу, 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 ответа
Привязка была на самом деле в порядке. Наконец, это было отсортировано путем добавления первичного ключа (который я действительно должен был реализовать в первую очередь!)
Так что, если кто-то читает это, не может получить свое представление сетки на странице через источник данных объекта, убедитесь, что у вас есть первичный ключ!!!
Хорошо, я прочитал несколько мест, которые мне нужно добавить в источник данных, поэтому я получил следующий код
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSourceID = "lqPackWeights";
}
Теперь, когда я создаю страницу, она работает нормально, но когда я нажимаю на страницу 2 из x, я получаю это неприятное маленькое сообщение:
Ошибка сервера в приложении /onlineReportingFUNCTIONING.
Этот провайдер поддерживает Skip() только для упорядоченных запросов, возвращающих сущности или проекции, которые содержат все столбцы идентификаторов, где запрос является запросом с одной таблицей (без объединения) или представляет собой Distinct, Except, Intersect или Union (не Concat) операция.
Что это тогда?
Это то, где вещи становятся интересными! Я использую источник данных 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 (отправитель объекта, 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();
}
Я подозреваю, что у меня слишком много привязок... Как вы, вероятно, можете сказать из моего кода, это новая территория для меня, так что будьте осторожны со злоупотреблениями!