2013-05-29 4 views
1

У меня есть GridView, который инициализирует страницу, используя все содержимое таблицы используется исходный DataSourceID="SqlDataSource1"Обновление GridView SelectCommand

testPage.aspx:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ 
ConnectionStrings:ConnectionString %>" 
SelectCommand="SELECT [Field1], [Field2], [Field3], [Field4] FROM [Analysis] 
ORDER BY [Field1] DESC"> 
</asp:SqlDataSource> 

(я изменил имена реальные полевые !).

Это прекрасно работает, и gridView заполняет полные данные таблицы. На основе другого события теперь я хочу изменить SelectCommand для фильтрации таблицы с помощью предложения SQL WHERE. Я попытался

testPage.aspx.cs:

protected void ctl04_ValueChanged(object sender, EventArgs e) 
    { 
     SqlDataSource1.SelectCommand = "SELECT [Field1], [Field2], 
     [Field3], [Field4] FROM [Analysis] WHERE [Field1] = 'items' ORDER BY 
     [Field1] DESC"; 
     gridView1.DataBind(); 
    } 

пожаров событий и, как представляется, работать нормально, но gridView1 не обновляется/обновление и все еще содержит данные для полной таблицы.

Может кто-нибудь дать некоторые указатели, как заставить это работать? Спасибо

+0

Попробуйте 'GridView.DataSource = null;' перед тем, как переназначить команду select. Это должно заставить «GridView» перегруппироваться с помощью нового 'SelectCommand'. –

+0

Это не работает для меня, он работает нормально, но gridView1 по-прежнему содержит полные данные таблицы после того, как событие срабатывает. – user3357963

ответ

2

Я думаю, что проблема PostBack и загрузка страницы. Когда открыта страница и вызывается метод page_load. затем обновляется GridView, используя заявление по умолчанию SELECT. Вы должны поместить код для обновления кода:

if (!Page.IsPostback) 
{ 
    // Your Code 
} 
+0

Спасибо. Я удалил событие 'ctl04_ValueChanged' и добавил' AutoPostBack = "True", а затем переместил код в событие 'Page_Load'. – user3357963

1

Как насчет создания источника данных 2-го блока и вы можете переключаться между ними. Я думаю, что это происходит из-за post back

Смежные вопросы