Ошибка «DataSource и DataSourceID определены» с использованием ASP.NET GridView - PullRequest
9 голосов
/ 06 ноября 2008

"DataSource и DataSourceID определены в grdCommunication. Удалить одно определение."

Я только что получил эту ошибку сегодня, код работал до того дня, когда я опубликовал последнюю версию на нашем сервере, и она сломалась с этой ошибкой как локально, так и на сервере. Я не использую «DataSourceID», приложение считывает запросы к базе данных в таблицу данных и устанавливает их в качестве источника данных на GridView. Я выполнил поиск в Visual Studio, выполняя поиск по всему решению, и строка «DataSourceID» не отображается ни в одной строке кода во всем решении. Это первое, что меня взволновало.

Я полагаю, он работал вчера, поэтому я вернул код к вчерашней сборке. Ошибка все еще была. Я продолжал возвращать сборку, и проблема все еще есть. Я вернулся через месяц, я все еще получаю ту же ошибку. Это приложение работало нормально сегодня утром? Изменений в коде действительно не было, и нигде в приложении не задан DataSourceID НИКОГДА на любом из видов сетки. Кто-нибудь вообще видел что-нибудь подобное ??

Как я могу получить эту ошибку, если DataSourceID никогда не устанавливается ... и слово "DataSourceID" отсутствует в моем решении? Я только что сделал wingrep по всему дереву, делая нечувствительный к регистру поиск по datasourceid .... абсолютно ничего не вытащил. Это слово абсолютно не во всем приложении.

    <asp:GridView ID="grdCommunication" runat="server" 
    Height="130px" Width="100%"
     AllowPaging="true" >
    ... standard grid view column setup here... 
    </asp:GridView>

// Code behind.. to set the datasource
  DataSet dsActivity = objCompany.GetActivityDetails();

  grdCommunication.DataSource = dsActivity;
  grdCommunication.DataBind();

// Обновлено: удалены некоторые запутанные заметки.

Ответы [ 13 ]

0 голосов
/ 04 февраля 2010

всегда связывать набор данных с индексом таблицы в gridview ...

ех. gridgrdCommunication.Table [0]; как упомянуто выше Цильбом

Второй способ, которым вы намеренно пишете ..

gridgrdCommunication.DataSourceID = String.Empty; gridgrdCommunication.DataSource = DS; gridgrdCommunication.DataBind ();

0 голосов
/ 17 марта 2009

Сегодня я получил эту ошибку, оказалось, что она не имела никакого отношения к DataSourceID и имела отношение к самому DatasSource.

У меня была проблема в моем DatasSource, и вместо того, чтобы получить ошибку, связанную с DatasSource, я получил эту бессмысленную ошибку.

Убедитесь, что у вас хороший источник данных, и эта ошибка должна исчезнуть.

0 голосов
/ 26 января 2009

Я столкнулся с той же ошибкой, но с совершенно другой проблемой и решением. В моем случае я использую LINQ to SQL для заполнения некоторых выпадающих списков, а затем кэширую результаты для дальнейших просмотров страниц. Все будет нормально загружаться с чистым кешем, а затем произойдет ошибка при последующих просмотрах страницы.

if (Cache["countries"] != null)
{
    lbCountries.Items.Clear();
    lbCountries.DataValueField = "Code";
    lbCountries.DataTextField = "Name";
    lbCountries.DataSource = (Cache["countries"]);
    lbCountries.DataBind();}
else
{
    var lstCountries = from Countries in db_read.Countries orderby Countries.Name select Countries;
    lbCountries.Items.Clear();
    lbCountries.DataValueField = "Code";
    lbCountries.DataTextField = "Name";
    lbCountries.DataSource = lstCountries.ToList();
    lbCountries.DataBind();

    Cache.Add("countries", lstCountries, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 240, 0), System.Web.Caching.CacheItemPriority.High, null);
}

Проблема возникла из: Cache.Add ("страны", lstCountries , ноль, System.Web.Caching.Cache.NoAbsoluteExpiration, новый интервал времени (0, 240, 0), System.Web.Caching.CacheItemPriority.High, ноль) ;

Когда это должно было быть: Cache.Add ("country", lstCountries.ToList (), null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan (0, 240, 0), System.Web.Caching.CacheItemPriority. Высокий, ноль);

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