所以在我尝试通过ObjectDataSource进行自定义gridview分页之前...我想我已经阅读了人类已知的每个教程,以确保我得到它.它看起来不像火箭科学.
我在gridview上设置了AllowPaging = True.
我在gridview上指定了PageSize ="10".
我在ObjectDataSource上设置了EnablePaging ="True".
我已经将2个分页参数(maximumRows&startRowIndex)添加到我的业务对象的select方法中.
我创建了一个类似的"count"方法,其签名与select方法相同.
我似乎遇到的唯一问题是在执行期间... ObjectDataSource正在为我的业务对象提供最大值-1,我不能为我的生活找出原因.我已经搜索到网络的末尾,其他人遇到这个问题,显然我是唯一一个.该StartRowIndex参数似乎是工作得很好.
有任何想法吗?
一些上下文:这与我开始构建多层Web应用程序的愿望有关:
例如,我真的不想要一个让我的表示层直接与EF实体对话的响应.
我用C#ASP.NET和SQL做了自己的Web开发已有10年了,但在正式的OOAD方面,我仍然是新手.我最近一直热衷于追求这种技能,但我仍然很擅长并且有些东西我无法完全理解.我希望有人能以一种带来顿悟的方式来解释它:
假设我创建了一个以某种方式管理People的Web应用程序,我的Person对象必须拥有FirstName,LastName,HairColor,EyeColor,Ethnicity,StateOrProvince等属性.我正在使用SQL Server进行持久性...所以常识会指示People表中的相应字段都是外键:
FirstName varchar(50)
LastName varchar(50)
HairColor tinyint
EyeColor tinyint
Ethnicity tinyint
StateOrProvince tinyint
Run Code Online (Sandbox Code Playgroud)
显然,这意味着我为每个字段(即HairColors表,EyeColors表,种族表等)都有相应的查找表,并且每个查找表都有一个ID和一个名称.当然,每当我想显示有关Person的任何有用信息时,这些查找表中的Name字段将与我的People数据一起加入.
该网站的一些主要功能将是:
1.)在Gridview中枚举人物(FirstName,LastName,HairColor,EyeColor,Ethnicity,StateOrProvince)
2.)在只读页面上显示个人的详细信息(FirstName,LastName,HairColor,EyeColor,Ethnicity,StateOrProvince)
3.)允许用户在更新页面上更新单个Person的数据(FirstName,LastName,HairColor,EyeColor,Ethnicity,StateOrProvince)
案例#1 如果我在网格视图中枚举Person对象的集合...每个Person实例都需要将其HairColor,EyeColor,Ethnicity,StateOrProvince属性显示为有意义的字符串(即SQL查找表中的Name字段,不是它的ID).很明显,我的SQL sproc会有一些JOIN来为我提供在每个Person实例中填充这些文本属性所需的相应字符串数据.
情况#2 再次,我的sproc将有一个JOIN将人类可读的属性名称作为字符串返回,我将使用myPerson.HairColor,myPerson.EyeColor等内容在只读Label控件中显示它们.
案例#3 在这里,我将显示一个页面,其中包含每个属性的下拉列表(即value = HairColorId,Text = HairColorName).我在这里的直接本能是使用每个属性的ID(类似于myPerson.HairColorId)来遍历DDL项并选择一个值,该值表示People表当前为此Person保留的头发颜色.如果用户在任何属性DDL中选择了不同的东西,我需要将相应的SelectedId值传递给UPDATE sproc,并修改People表中针对此特定Person的值.
我如何最好地设计一个Person对象,使其包含HairColor,EyeColor,Ethnicity,StateOrProvince的ID和Name,以便我可以在显示信息时使用Name,但初始化更新DDL控件的ID ...最终处理更新?
正如我已经反思的那样......我得出的结论是,我需要创建表示HairColor,EyeColor,Ethnicity,StateOrProvince属性的类.
然后是我的Person类,而不是像这样:
public class Person
{
string FirstName { get; set; }
string LastName { …Run Code Online (Sandbox Code Playgroud)