ASP.NET GridView模型绑定

时间:2016-06-08 07:31:00

标签: asp.net gridview model-binding

我是ASP.NET新手,我想使用WebForms编写一个简单的WebApplication,它连接到数据库并在网格中显示一些数据(带分页)。我使用Visual Studio 2015

为了显示数据,我将GridView与ObjectDataSource结合使用。

我使用EntityFramework和一个方法GetCustomer()返回数据库中的所有客户。我将该方法用作SelectMethod

我的问题是:
两个控件GridView和ObjectDataSource都具有Paging and SelectMethod

的参数

如果我想使用Model Binding,我应该使用哪个控件的Paging和SelectMethod参数?

目前我正在使用它:

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>


这些设置有效,数据显示,分页工作正常 但我不确定这是否是正确的方法。

如果我更改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>

我收到错误:

  

无法在'gridViewCustomers'上定义DataSource或DataSourceID   当它使用模型绑定时。

如果我从GridView中删除DataSourceID,那么我得到了

  

“未找到名为'GetCustomers'的公共方法或   有多个方法具有相同的名称“

1 个答案:

答案 0 :(得分:0)

您在第一个示例中执行此操作的方式是正确的。

  1. 分页 - 应在GridView级别设置,指定是否允许以及要显示的行数(PageSize)。
  2. 应在SelectMethod上指定CRUD方法 - InsertMethodDeleteMethodUpdateMethodObjectDataSource。如果将其更改为SqlDataSource您需要在SqlDataSource级别更改它,但属性名称略有不同,例如SelectCommandInsertCommand
  3. 注意:EnablePaging的{​​{1}}属性绝对可以配置为在ObjectDataSource上启用分页,但它更复杂,而且在所有这些年中我都是{&#39}}我曾与GridView控件合作过,我从未见过有人这样做过。不过,如果您对如何做到这一点感到好奇,请查看this MSDN article