1.更新数据出错问题
使用ASPxGridView控件时,点Edit编辑一行,出来Update和cancel,编辑完数据后点击Update,出错:在正在编辑的那行下方会出来一汗背景淡红色字体是红色的字“不支持所指定的方法”,英文是Specified method is not supported.
图1:
解决办法是用数据源控件加载数据,指定ASPxGridView控件的DataSourceID等于该数据源控件的ID,并指定一个KeyFieldName。我是看了官方的DEMO才知道这样做的,我原来是用我们项目自己的数据访问层提供的接口加载数据在.ASPX.CS文件中绑定给它的,这样做不无更新数据的原因我解释为:ASPxGridView控件本身只做显示数据的作用,但网页加载完毕后就不存在数据源,因此不法Update数据,需要用数据源控件保存数据以便更新,并且更新数据是让数据源控件去做的。这样解释不合理之处还望赐教。
数据源控件有很多,我这里用的是ObjectDataSource,因为我们项目本身已经有数据访问层存在了,不需要用其他的数据源控件访问数据库。在这个WEB项目下新建一个文件夹App_Code,在App_Code下新建个类abc,定义命名空间为DEMO,using数据访问层的命名空间,添加一个方法LoadData,返回DataTable类型的值,方法参数随意,在这个方法中加载数据返回;再添加一个方法UpdateData,参数至少1个以上,就是需要传给存储过程的一些ID列和要修改的值(这些参数都要在ObjectDataSource的UpdateParameters属性中添加,它们的名字与这些参数名相同,同时它们还要在ASPxGridView控件的Columns中存在,如果是不想显示的列可以设置Visible="False"),那么对于我们肯定是要修改一些值的要不然就不用Update了,无需返回值,方法中调用数据访问层的方法修改数据。
然后设置ObjectDataSource控件的TypeName="DEMO.abc",SelectMethod="LoadData",UpdateMethod="UpdateData",同时还要添加SelectParameters的参数名和值,参数名要跟LoadData函数中的参数名相同,值有各种选择,可以是控件的属性,也可以是Session变量,根据需要设定,如下图。好了,这回没有红色的字出来了,而且数据修改成功。
2.显示格式样式的设置
图2:
这个是他官方的DEMO,他们的这个视图样式是怎么做出来的,我花了一些时间学习它。我们经常出现有很多字段要显示,但由于页面宽度的限制我们不能将太多的信息显示在一行中,但在我们编辑的时候要显示它,并且可能还要编辑更新它,要想在编辑的时候显示成上图的样式,那么要进行以下设置:
A>确认SettingsEditing的Mode=EditFormAndDisplayRow,EditFormColumnCount=3,设置成像图2中的多行进行编辑而不是图1中的嵌入在一行中,每行显示列数为3列。
图3:
B>设置各列属性,如下图。
Visible表示在非编辑状态下是否可见,它可以用来设置有些太长字段或次要字段不可见
EditFormSettings的Visible用来设置在编辑状态下是否可见,设置它为true就可以让太长字段或次要字段在编辑时显示了
VisibleIndex指在非编辑状态下该列显示的位置,0表示该列显示在第一列,以此类推
EditFormSettings的VisibleIndex同上,但它是在编辑状态下的位置
有了上面四个属性就可以很好的设置非编辑与编辑两种状态下以不用的顺序显示了,下面还有两个重要的属性:
EditFormSettings的ColumnSpan表示该列占用多少列,相当于html中的td标签的colspan属性
EditFormSettings的RowSpan表示该列占用多少行,相当于html中的td标签的rowspan属性
CIO之家 www.ciozj.com 公众号:imciow