2016-06-08 97 views
2

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

为了显示数据,我使用了GridView和ObjectDataSource。

我使用的EntityFramework和方法GETCUSTOMER()返回所有的客户从database.I使用该方法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> 

我得到一个错误:

的DataSource或DataSourceID的不能上定义的“gridViewCustomers”时,它使用模型绑定 。

如果我在GridView删除的DataSourceID然后我得到

“名为‘GetCustomers的’公共方法找不到或 有名称相同的多个方法”

回答

0

你在第一个例子中的做法是正确的。

  1. 寻呼 - 应在GridView的级别设置,指定无论是允许与否和多少行显示(PageSize)。
  2. CRUD方法 - SelectMethodInsertMethodDeleteMethodUpdateMethod应在ObjectDataSource指定。如果你改变这SqlDataSource你需要改变它的SqlDataSource水平,但随后的属性名称略有不同e.g SelectCommandInsertCommand E.T.ç

注:ObjectDataSourceEnablePaging财产可以最肯定被配置为允许在GridView分页但它是更为复杂,在所有这些年来我已经与GridView控制我从来没有见过任何人做工作就这样。尽管如此,如果你很好奇如何做到这一点,请看this MSDN article

+0

thx为您的答案 但我看到了很多例子在网上把SelectMethod在GridView ,例如http://www.dotnetjalps.com/2013/03/SelectMethod-in-asp-net-45-Model -binding.html 这是什么混淆了我...有没有关于如何实现模型绑定与GridView和数据源的最佳做法? – Spacewalker

+0

这一切都取决于你的要求是什么。如果你只需要绑定一些数据到gridview然后继续并使用SelectMethod.But如果你有一大堆网格和其他控件应该使用相同的数据源然后使用一个ObjectDataSource或一个SqlDataSource并设置它们的select方法。没有正确或错误的方法来做到这一点,这一切都取决于你的要求 –