Gridview пусто, когда SelectedIndexChanged вызывается - PullRequest
0 голосов
/ 08 апреля 2010

У меня есть DataGrid, который динамически привязывается к запросу базы данных.Пользователь вводит некоторый текст для поиска в текстовое поле, нажимает кнопку поиска, а код позади создает соответствующий запрос к базе данных с помощью LINQ (выполняет поиск в таблице на основе строки и возвращает ограниченный набор столбцов).

Itзатем устанавливает источник данных GridView в качестве запроса и вызывает DataBind ().

protected void btnSearch_Click(object sender, EventArgs e)
{
    var query = from record in DB.Table
                where record.Name.Contains(txtSearch.Text) //Extra string checking etc. removed.
                select new
                {
                    record.ID,
                    record.Name,
                    record.Date
                };

    gvResults.DataSource = query;
    gvResults.DataBind();
}

Это прекрасно работает.

Когда пользователь выбирает строку в сетке, обработчик события SelectedIndexChanged получаетid из строки в сетке (одно из полей) запрашивает полную запись из БД, а затем заполняет набор полей редактора / сведений полными сведениями о записях.

protected void gvResults_SelectedIndexChanged(object sender, EventArgs e)
{
    int id = int.Parse(gvResults.SelectedRow.Cells[1].Text);
    DisplayDetails(id);
}

Это прекрасно работает намоя локальная машина, где я разрабатываю код.На рабочем сервере, однако, функция вызывается успешно, но количество строк и столбцов на gvResults, griview равно 0 - таблица пуста.

Состояние просмотра gridview включено, и я не вижуочевидные различия.Я сделал некоторые наивные предположения, или я полагаюсь на что-то, что, вероятно, будет настроено по-другому в отладке?

Локально я запускаю пустой веб-проект asp.net в VS2008, чтобы ускорить разработку.На производственном сервере работает CMS sitecore, поэтому он настроен несколько иначе.

Любые мысли и предложения приветствуются.Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 08 апреля 2010

Проверьте ваш web.config.Скорее всего, свойство «AutomaticDataBind» установлено в «false» в одной среде и «true» в вашем устройстве разработки.

Я не могу быть уверен, очевидно, но я столкнулся с подобной проблемой вПрошлое и симптомы были точно такими, как вы описали здесь: -)

PS Sitecore по умолчанию принимает значение false.

0 голосов
/ 08 апреля 2010

Покопавшись на форумах sitecore еще, я наткнулся на это сообщение в блоге , объясняющее одно потенциальное решение.

Я добавил <type>System.Web.UI.WebControls.GridView</type> в раздел <typesThatShouldNotBeExpanded> файла Web.config, и он, похоже, работает для нас.

Похоже, что это связано с конвейером рендеринга макета страницы sitecore, где он расширяет вложенные макеты и внутренние заполнители для генерации полного рендеринга страницы. Он обращается к элементам управления .Net на странице и немного их перемещает, что может привести к неправильной работе некоторых элементов управления.

На SDN есть статья об этом, хотя вы можете прочитать ее, только если у вас есть аккаунт с достаточным количеством привилегированных пользователей. Надеюсь, что в будущем это поможет другим пользователям сайта.

...