Ошибка подкачки при использовании SPGridView - PullRequest
4 голосов
/ 02 августа 2010

Я использую элемент управления OOTB SPGridViewPager, связанный с SPGridView. Это работало нормально в 2007 году, но теперь мы обновились до 2010 года, при попытке пролистать набор данных я получаю следующую ошибку:

System.InvalidCastException: невозможно преобразовать объект типа «System.Int32» в тип «System.String». в Microsoft.SharePoint.WebControls.SPGridView.set_PageIndex (значение Int32) в Microsoft.SharePoint.WebControls.SPGridViewPager.OnClickNext (аргументы EventArgs) в Microsoft.SharePoint.WebControls.SPGridViewPager.RaisePostBackEment.PlayEvent.SignEvent. .RaisePostBackEvent (IPostBackEventHandler sourceControl, String eventArgument) в System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, логический includeStagesAfterAsyncPoint

Мой код все еще ссылается на сборку Microsoft.SharePoint версии 12, поэтому я не совсем уверен, что изменилось, чтобы вызвать проблему.

Ответы [ 2 ]

4 голосов
/ 05 января 2011

Та же проблема здесь. Однако я не использую элемент управления SPGridViewPager. Я просто звоню .PageIndex = e.NewPageIndex; Оба типа Integer. Я делаю назначение в методе PageIndexChanging(object sender, GridViewPageEventArgs e).

Не уверен, что происходит в данный момент. Я смотрю на это в Reflector в данный момент.

Мне было интересно, используете ли вы DataKeys? Похоже, здесь происходит 2 приведения. Смотри ниже.

public override void set_PageIndex(int value)
{
    int pageIndex = this.PageIndex;
    DataKeyArray dataKeys = this.DataKeys;
    base.PageIndex = value;
    if (pageIndex != this.PageIndex)
    {
        this.PreviousPageIndex = pageIndex;
        if ((dataKeys == null) || (dataKeys.Count <= 0))
        {
            this.PreviousPageFirstRowDataKey = null;
            this.PreviousPageLastRowDataKey = null;
        }
        else
        {
            **this.PreviousPageFirstRowDataKey = (string) dataKeys[0].Value;
            this.PreviousPageLastRowDataKey = (string) dataKeys[dataKeys.Count - 1].Value;**
        }
    }
}

Чтобы это исправить, мне пришлось более внимательно посмотреть на мой источник данных и ключи данных. У меня есть набор записей, которые возвращаются с SQL Server, и я привязывал их к POCO. Этот класс имеет несколько открытых свойств типа Integer. Эти целые числа были моими ключами данных в сетке. Вместо этого я заменил их тип на строку, чтобы обойти проблему приведения.

Надеюсь, это имеет смысл. Это исправило это для меня.

0 голосов
/ 10 октября 2012

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

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