博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dev控件系列之ASPXGridview控件自主绑定数据
阅读量:6245 次
发布时间:2019-06-22

本文共 7059 字,大约阅读时间需要 23 分钟。

      最近由于需求研究了下Dev系列控件,在用ASPXGridview控件时,在官方DEMO中都是用数据源控件例如SqlDatasource,ObjectDatasource等数据源控件来绑定。由于习惯用ADO.NET在后台进行自主数据绑定,但是如果用ADO.NET后台绑定会发现ASPXGridView的所有自带排序,编辑删除等数据操作都会出现找不到指定方法的问题。所以研究了下这个控件,基本实现了后台用ADO.NET代码来实现数据绑定。同时后台绑定的排序,分页,数据操作插入,删除编辑常规会出现的问题也已经解决。

后台创建columns并且为aspxgridview绑定数据代码如下:

Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ -->string SelSql = "select * from bas_zsjfcsj where jh='" + TreeView1.SelectedNode.Text.ToString().Trim() + "' order by yczsh"; DataSet DS = DataHandle.ExecuteSQL(SelSql); GridViewCommandColumn xx = new GridViewCommandColumn(); xx.Caption = "编辑"; xx.NewButton.Visible = true; xx.DeleteButton.Visible = true; xx.EditButton.Visible = true; xx.NewButton.Text = "新建"; xx.EditButton.Text = "编辑"; xx.DeleteButton.Text = "删除"; xx.UpdateButton.Text = "更新"; xx.CancelButton.Text = "取消"; xx.VisibleIndex = 0; GridViewDataColumn x1 = new GridViewDataColumn(); x1.FieldName = "cenghao"; x1.VisibleIndex = 1; x1.Caption = "层号"; GridViewDataColumn x2 = new GridViewDataColumn(); x2.FieldName = "yczsh"; x2.VisibleIndex = 2; x2.Caption = "油藏中深(m)"; GridViewDataColumn x3 = new GridViewDataColumn(); x3.FieldName = "pzl"; x3.VisibleIndex = 2; x3.Caption = "配注量(m3)"; ASPxGridView1.Columns.Clear(); ASPxGridView1.Columns.Add(xx); ASPxGridView1.Columns.Add(x1); ASPxGridView1.Columns.Add(x2); ASPxGridView1.Columns.Add(x3); ASPxGridView1.KeyFieldName = "cenghao"; ASPxGridView1.DataSource = DS.Tables[0].DefaultView; Session["dsjc"] = DS; ASPxGridView1.DataBind();

点击表头自主排序代码:

protected void ASPxGridView1_BeforeColumnSortingGrouping(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewBeforeColumnGroupingSortingEventArgs e)     {
DataSet DS = (DataSet)Session["dsjc"]; if (DS == null) { return; } DataView DV = DS.Tables[0].DefaultView; switch (e.Column.FieldName) {
case "cenghao": if ((SortOrder)e.OldSortOrder != SortOrder.Descending) {
DV.Sort = "cenghao DESC"; } else {
DV.Sort = "cenghao ASC" ; } break; case "yczsh": if ((SortOrder)e.OldSortOrder != SortOrder.Descending) {
DV.Sort = "yczsh DESC"; } else {
DV.Sort = "yczsh ASC"; } break; case "pzl": if ((SortOrder)e.OldSortOrder != SortOrder.Descending) {
DV.Sort = "pzl DESC"; } else {
DV.Sort = "pzl ASC"; } break; } ASPxGridView1.DataSource = DV; ASPxGridView1.DataBind(); }

错误提示栏代码:

protected void ASPxGridView1_CustomErrorText(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewCustomErrorTextEventArgs e)     { if (Session["yczs"] == null)         {             e.ErrorText = "更新失败,更新项不是数值或者已经存在";         }     }

数据删除事件代码:

protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)     {
DataSet DS = (DataSet)Session["dsjc"]; DataRow[] DR = DS.Tables[0].Select("cenghao='" + e.Keys[0].ToString().Trim() + "'"); if (DR.Length > 0) {
DR[0].Delete(); } if (Session["ModifyType"].ToString().Trim() != "Modify") {
DS.AcceptChanges(); } ASPxGridView1.CancelEdit(); e.Cancel=true; ASPxGridView1.DataSource = DS.Tables[0].DefaultView; ASPxGridView1.DataBind(); }

数据插入代码:

protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)     {
Session["yczs"] = null; DataSet DS = (DataSet)Session["dsjc"]; if (e.NewValues[2] == null || e.NewValues[1] == null || e.NewValues[0] == null) {
return; } if (!IsNumberic(e.NewValues[2].ToString().Trim()) || !IsNumberic(e.NewValues[1].ToString().Trim())) {
return; } DataRow[] DR = DS.Tables[0].Select("cenghao='" + e.NewValues[0].ToString().Trim() + "'"); if(DR.Length>0) {
return; } if (rgjd.Text.Trim() != "") {
if (double.Parse(e.NewValues[1].ToString().Trim()) > double.Parse(rgjd.Text.Trim())) {
Session["yczs"] = "large"; return; } } DataRow DRNew = DS.Tables[0].NewRow(); DRNew["cenghao"] = e.NewValues[0].ToString().Trim(); DRNew["yczsh"] = double.Parse(e.NewValues[1].ToString().Trim()); DRNew["pzl"] = double.Parse(e.NewValues[2].ToString().Trim()); if (Session["ModifyType"].ToString().Trim() == "Modify") {
DRNew["jh"] = TreeView1.SelectedNode.Text.Trim(); } DS.Tables[0].Rows.Add(DRNew); ASPxGridView1.CancelEdit(); e.Cancel=true; ASPxGridView1.DataSource = DS.Tables[0].DefaultView; ASPxGridView1.DataBind(); }

数据更新代码:

protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)     {
Session["yczs"] = null; DataSet DS = (DataSet)Session["dsjc"]; if (!IsNumberic(e.NewValues[2].ToString().Trim()) || !IsNumberic(e.NewValues[1].ToString().Trim())) {
return; } if (e.Keys[0].ToString().Trim() != e.NewValues[0].ToString().Trim()) {
DataRow[] dr = DS.Tables[0].Select("cenghao='" + e.NewValues[0].ToString().Trim() + "'"); if (dr.Length > 0) {
return; } } if (rgjd.Text.Trim() == "") {
if (double.Parse(e.NewValues[1].ToString().Trim()) > double.Parse(rgjd.Text.Trim())) {
Session["yczs"] = "large"; return; } } DataRow[] DRSelf = DS.Tables[0].Select("cenghao='" + e.Keys[0].ToString().Trim() + "'"); if (DRSelf.Length > 0) {
DRSelf[0]["yczsh"] = double.Parse(e.NewValues[1].ToString().Trim()); DRSelf[0]["pzl"] = double.Parse(e.NewValues[2].ToString().Trim()); DRSelf[0]["cenghao"] = e.NewValues[0].ToString().Trim(); } ASPxGridView1.CancelEdit(); e.Cancel = true; ASPxGridView1.DataSource = DS.Tables[0].DefaultView; ASPxGridView1.DataBind(); }

这些代码基本上没有什么技术含量,仅仅是提供一种方法让习惯用ADO.NET后台绑定的兄弟们使用。Dev控件系列在样式和操作风格下非常强大。例如这个ASPXGridView,风格非常大方,数据操作也符合用户习惯。这里仅仅介绍了一小部分,还有其他的模板列操作,弹出层数据操作,动态数据操作等等很多强大功能。顺便介绍一下使用过程种的问题:

  • Dev控件发布的时候,必须先找到web.config中所引用的dll名字到dev控件安装程序中的dll库种复制相应的dll到发布完的bin目录下,同时必须确保dev控件为已注册版本。
  • ASPXGridview控件使用过程中,不管是使用自带的样式还是自主定义的样式,尽量确保页面第一次pageload的时候ASPXGridView控件是可见,如果第一次pageload的时候ASPXGridview控件不可见,我们会发现通过事件将gridview更改为可见的时候,gridview的定义的样式已经没有了,并且编辑按钮也已经失效(可能是本人还没完全了解这个控件吧,期待有人告诉原因与解决方法)。这个问题在我们用提示框是否删除或者提示删除成功的时候也会出现,目前我的解决方法是将ASPX页和引用的样式theme在同一路径下。
  • aspxgridview控件也支持模板系列,可以研究下官方的demo

转载于:https://www.cnblogs.com/gaoxuzhao/archive/2011/10/12/2208927.html

你可能感兴趣的文章
nat 转换 vrrp热备份 端口跟踪
查看>>
Linux crontab调用脚本中的ifconfig命令返回为空
查看>>
Linux解决Device eth0 does not seem to be present
查看>>
php 冒泡排序法
查看>>
seaJs原理分析和源码解读(上)
查看>>
docker学习记录(二)--安装docker并配置镜像源
查看>>
HTML5 localStorage本地存储实际应用举例
查看>>
python之装饰器
查看>>
华为ensp实验拓扑一熟悉常用的IP相关命令拓扑
查看>>
mysql双主复制模型
查看>>
U8860 华为荣耀各种刷机教程
查看>>
Java使用"指针"快速比较字节
查看>>
Tomcat配置性能管理服务--Elastic APM Server
查看>>
这些年正Android - Traveling 第一章001
查看>>
Oracle备份与恢复(五)
查看>>
处理电脑蓝屏步骤
查看>>
虚拟桌面的备份恢复最佳实践 第二部分
查看>>
恢复Innodb损坏的表
查看>>
Linux 时间
查看>>
集群管理软件 clusterware
查看>>