2013-08-09 3 views
2

У меня есть GridView, который уже извлекает некоторые данные из SqlDataSource.Не удается сортировать GridView после использования DataBind()

GridView имеет сортировки, пейджинг, выбор допускается.

Теперь, когда я щелкать button, я создаю новый DataSource с новым запросом, и я задаю новый DataSource к этой сетке, то я использую .DataBind() обновить эту сетку, но после этого, Я не могу сортировать какой-либо столбец.

Динамически Создание нового DataSource

SqlDataSource data = new SqlDataSource(); 
data.ConnectionString = SqlDataSource1.ConnectionString; 
data.ProviderName = SqlDataSource1.ProviderName; 
data.SelectCommand = "SELECT * FROM USERS"; 
GridView2.DataSourceID = ""; 
GridView2.DataSource = data; 
GridView2.DataBind(); 

Я пытался использовать следующее:

GridView2.AllowSorting = true; 

Тем не менее он не работает, это ошибка я получаю.

enter image description here

Что я здесь отсутствует?

+0

после того, как сортировка источника данных gridview не найдена, так что это произойдет. I столкнулся с этой ошибкой. –

ответ

2

Если причина изменения SqlDataSource потому, что вы хотите, чтобы выполнить новый запрос на нажатие кнопки; вы можете сделать это без создания нового источника данных:

protected void yourButton_Click(object sender, EventArgs e) 
{ 
    // dsYourDataSource is the SQLDataSource that is already connected to your gridview 
    dsYourDataSource.SelectCommand = "SELECT * FROM USERS"; 
    yourGridView.DataBind(); 
} 

Это может помочь.

+0

Да, это все, что я хотел сделать. Благодарю. –

0

Если вы установили AllowPaging = «истинный» или AllowSorting = «истина» на GridView управления без использования DataSourceControl DataSource (т.е. SqlDataSource, ObjectDataSource), вы будете работать в следующие ошибки:

При смене страницы на GridView управления:

The GridView 'GridViewID' fired event PageIndexChanging which wasn't handled. 

При нажатии на имя столбца, чтобы отсортировать столбец на GridView управления:

The GridView 'GridViewID' fired event Sorting which wasn't handled. 

в результате п Если вы установите свойство DataSourceID GridView в DataSourceControl DataSource, вам нужно добавить обработчики событий для сортировки и подкачки.

Ответ на вопрос this Вопрос может вам помочь.

Также я использовал this custom control в моих проектах. Вы можете загрузить libarary из ссылки и использовать настраиваемый элемент управления GridViewEx. Это работает хорошо. Это будет выглядеть так же, как реальный:

<cc:GridViewEx ID="gv" runat="server" AllowPaging=True AllowSorting=True 
     OnDataSourceRequested="gv_DataSourceRequested" 
     AutoGenerateColumns="False"> 
    <Columns> 
     <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" /> 
     ... 
    </Columns> 
</cc:GrdiViewEx> 
Смежные вопросы