2016-06-08 2 views
2

Я новичок в ASP.NET, и я хочу написать простую WebApplication с помощью WebForms, которая подключается к базе данных и отображает некоторые данные в Grid (с пейджингом). Я использую Visual Studio 2015ASP.NET GridView Model-binding

Для отображения данных я использую GridView в сочетании с ObjectDataSource.

Я использую EntityFramework и метод GetCustomer(), который возвращает все Клиенты из database.I использовать этот метод как SelectMethod

Мой вопрос:
Оба элемента управления, GridView ObjectDataSource, имеют параметры для Paging and SelectMethod

Какой параметр управления для пейджинга и SelectMethod следует использовать, если я хочу использовать Model Binding?

В настоящее время я использую это:

GridView :<br> 

AllowPaging  = true<br> 
PageSize = 10<br> 
SelectMethod = ""<br> 
DataSourceID = dsCustomers<br> 


ObjectDataSource:<br> 
ID     = dsCustomers<br> 
EnablePaging  = false<br> 
SelectMethod  = GetCustomers()<br> 
MaximumRowParameterName = ""<br> 
StartRowIndexParameterName = ""<br> 


Эти настройки работают, данные Displyed и пейджинговой работает.
Но я не уверен, что это правильный способ сделать это.

И если изменить настройки для Paging and SelectMethod как так

GridView: <br> 
AllowPaging  = false<br> 
PageSize  = ""<br> 
SelectMethod = GetCustomers()<br> 
DataSourceID = dsCustomers<br> 


ObjectDataSource:<br> 
ID     = dsCustomers<br> 
EnablePaging    = true<br> 
SelectMethod    = <br> 
MaximumRowParameterName  = ""<br> 
StartRowIndexParameterName = ""<br> 

Я получаю сообщение об ошибке:

DataSource или DataSourceID не могут быть определены на «gridViewCustomers» , когда он использует модель связывания.

Если удалить DataSourceID из GridView, то я получаю

«Публичный метод с именем„GetCustomers“был не найден либо были несколько методов, с тем же именем»

ответ

0

То, как вы делаете это в первом примере, является правильным.

  1. пейджинга - должен быть установлен на уровне GridView, с указанием того, что разрешено или нет, и сколько строк для отображения (PageSize).
  2. методы CRUD - SelectMethod, InsertMethod, DeleteMethod и UpdateMethod должны быть указаны на ObjectDataSource .Если вы изменить это SqlDataSource вам нужно будет изменить его на SqlDataSource уровне, но затем имена свойств немного отличаются SelectCommand например, InsertCommand Инопланетянинс

Примечание: EnablePaging свойство ObjectDataSource может определенно быть сконфигурирован для включения подкачки на GridView, но это более сложный и во все годы я работал с GridView контролем Я никогда не видел кто-нибудь сделать это так. Тем не менее, если вам интересно, как это можно сделать, взгляните на this MSDN article.

+0

thx для вашего ответа Но я вижу много примеров в сети, которые помещают SelectMethod в GridView , например http://www.dotnetjalps.com/2013/03/SelectMethod-in-asp-net-45-Model -binding.html Это то, что меня смущает ... есть ли лучшая практика о том, как реализовать привязку модели с помощью GridView & DataSource? – Spacewalker

+0

Все зависит от того, каково ваше требование. Если вам просто нужно привязать некоторые данные ТОЛЬКО к gridview, тогда перейдите и используйте SelectMethod.But, если у вас есть целая куча сеток и других элементов управления, которые должны использовать один и тот же источник данных, тогда используйте объект ObjectDataSource или SqlDataSource и установите для них метод select. Неправильный или неправильный способ сделать это, все зависит от ваших требований –