ASPXGridView使用小结

一。ASPXGridView外观显示 属性:

Caption----列的标题(

KeyFieldName----数据库字段

SEOFriendly 是否启用搜索引擎优化 Summary 指定分页汇总信息的格式

Setting节点的ShowFilterRow=True设置快速查找功能

SettingsBehavior.AllowFocusedRow=true 高亮选中的行,即选中行变色 SettingsBehavior.AllDragDrop=false禁止拖动标题列头 SettingsBehavior.AllowSort实现列头点击后是否可以排序

SettingsPager.ShowEmptyDataRows=True;当数据行为空时,显示空行 SettingsPager.PageSize 每页显示的记录总数

AllButton.Text “全部数据显示”按钮的文本 AllButton.Visible 是否显示“全部数据显示”按钮 FirstPageBuotton/LastPageButton/NextPageButton/PrevPageButton/ 对应首页、末页、下页、上页,设置同上。 NumericButtonCount 最小值为1,控制页码显示个数 protected void ASPxGridView1_PageIndexChanged(object sender, EventArgs e) { databind();//只需重新绑定数据即可实现上下翻页 }

新建的列默认是GridViewDataTextColumn类型,选择工具栏的Change To变更列的类型,可以改变新增或修改时的编辑方式。 设置日期类型显示格式,在“行为”PropertiesDateEdit--DisplayFormatString--例如:{0:yyyy年MM月}

当选择了show Group Panel时,FocusedRowChanged事件,重绑定数据,使用时先选中行,再查看 protected void ASPxGridView1_FocusedRowChanged(object sender, EventArgs e) { getdata(); }

禁止某一列进行编辑,该列的行为-EditFormSettings-Visible=False

代码中隐藏编辑列的增加,删除,更新按钮

(ASPxGridView1.Columns[编辑列] as GridViewCommandColumn).NewButton .Visible= true;

(ASPxGridView1.Columns[编辑列] as GridViewCommandColumn).DeleteButton.Visible = true;

(ASPxGridView1.Columns[8] as GridViewCommandColumn).UpdateButton .Visible= true;

每行都有一个CHECKBOX,可以动态选择,只需要这样即可

<Columns> <dx:GridViewCommandColumnShowSelectCheckbox ="true"VisibleIndex="8"></dx:GridViewCommandColumn>

....其它列

</Columns> 二。ASPXGridView绑定数据 ASPxGridView1.KeyFieldName = "ID";//指定主键。直接更新数据和子表绑定 需要用到
ASPxGridView1.DataSource = dt.defaultView;//指定Grid的数据 ASPxGridView1.DataBind(); //执行绑定 注意,如果查询结果字段有别名,编辑该字段时,UnboundType应设为Object

三。ASPXGridView查找

过滤数据,查找数据

方式一、展开列标题旁边的过滤清单过滤数据(类似Excel的过滤方式)grid.Settings.ShowHeaderFilterButton = true;过滤清单列出了该列出现的所有数据。还可以自定义过滤清单的内容,用法参阅:http://demos.devexpress.com/ASPxGridViewDemos/Filtering/HeaderFilter.aspx

方式二、在列头显示字段过滤条件输入框 grid.Settings.ShowFilterRow = true; 显示条件判断方式下拉列表grid.Settings.ShowFilterRowMenu = true;

四 删除数据

protected void ASPxGridView1_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)

{ e.Cancel = true;//否则,只有刷新页面才能看到删除后的结果

int id =Convert.ToInt32( e.Keys[0]);//获取ID

upd.DelDownFileList(id);//从数据库删除记录

UpLoadFileListBind();//数据表绑定

}

ASPxGridView自带的删除提示,

设两个属性即可: SettingsBehavior. ==> ConfirmDelete=True

SettingsText ==> ConfirmDelete=要提示的字符串

五.更新

取值 用e.NewValues[索引] 并且记得更新数据后

ASPxGridView1.CancelEdit();//结束编辑状态

e.Cancel = true;

bind();

例子:

//更新 protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)

{ Bill.Message m = new Bill.Message();
//取值 用e.NewValues[索引]

string id = Convert.ToString(e.Keys[0]);

string event_date = e.NewValues[1].ToString();

string event_title = e.NewValues[2].ToString();

string event_description = e.NewValues[3].ToString();

string tag = e.NewValues[4].ToString();

m.Message_update(id, event_date, event_title, event_description, tag);
ASPxGridView1.CancelEdit();//结束编辑状态 e.Cancel = true; bind(); }

六排序

在BeforeColumnSortingGrouping事件中重新绑定一下数据

七.分页 PageIndexChanged事件里重新绑定一下数据


1.动态添加非数据绑定列,例子:动态添加行号列

if (!IsPostBack) {

//动态添加行号非绑定数据 GridViewDataTextColumn dl = new GridViewDataTextColumn(); dl.Caption = "行号"; dl.FieldName = "hh";//该列绑定的字段hh dl.UnboundType = DevExpress.Data.UnboundColumnType.String;//非数据绑定类型为字符型 dl.PropertiesTextEdit.DisplayFormatString = "c";//显示字符的格式 dl.PropertiesTextEdit.FocusedStyle.ForeColor = System.Drawing.Color.Red; dl.VisibleIndex = 0;//设置行号列的索引位置 ASPxGridView1.Columns.Insert(0, dl);//把行号列插入0之前
getdata(); ASPxGridView1.Caption = "IP为"+GetClientIP()+"的用户,正在查看网银终端更新内容";
}

在CustomUnboundColumnData事件中

protected void ASPxGridView1_CustomUnboundColumnData(object sender, ASPxGridViewColumnDataEventArgs e) { if (e.Column.FieldName == "hh" && e.IsGetData) e.Value = (e.ListSourceRowIndex + 1).ToString(); }

2.ASPxComboBox列的相关操作

简单的方法是

1.FiledName写主表与此字段有关联外键字段:例如uid 2.在PropertiesCombobox下面找这几个属性: 然后在客户姓名的这一列的DataSourceId,给它绑定上我们字表的ObjectDataSource 在TextField设置字段名称,例如:name 在ValueField设置名称应该就是字表的主键(也就是主表引用字表的外键),例如:uid 这样就可以轻松做到,不用写代码,绑定多张表

手写代码的方法来绑定ASPxComboBox

在aspx中将该列的-行为-PropertiesComboBox-ValuesType设为System.String避免ComboBox出现无法选中的现象

using DevExpress.Web.ASPxGridView; using DevExpress.Web.ASPxEditors;

//在页面加载时,给combox列赋值,这里的workgroupID是在ASPxGridview中的Combox列绑定的字段 (ASPxGridView1.Columns["WorkgroupID"] as GridViewDataComboBoxColumn).PropertiesComboBox.ValueType = typeof(int);
fangqm.Netbank.Core.groupInfo group = new fangqm.Netbank.Core.groupInfo(); DataTable dt = group.groupSelectAll();//table for (int i = 0; i < dt.Rows.Count; i++) { int id = Convert.ToInt32(dt.Rows[i][0]); string v= dt.Rows[i][1].ToString();

(ASPxGridView1.Columns["WorkgroupID"] as GridViewDataComboBoxColumn).PropertiesComboBox.Items.Add(new ListEditItem(v, id));
}

在表格进行更新,添加操作时,e.NewValues[1])即可取到客户端的值,例如:

model.WorkgroupID = Convert.ToInt32(e.NewValues[1]);

注意应先呈现COMBOX列,后绑定数据,字段绑定是区分大小写的,要和SELECT语句字段名一模一样

3.数据汇总

汇总计算aspxgridview的所有行求得平均或总和并显示在页脚。

当settings.showfooter属性设置为True,才显示页脚。

aspxgridview的汇总条目是放在totalsummary属性里。设置DisplayFormat例如:总计{0]台终端,

设置FieldName为非绑定字段,SummaryType设为Sum表示计算这一列的和

4.隐藏编辑列,在DataBound事件中

protected void ASPxGridView1_DataBound(object sender, EventArgs e) { if(ASPxGridView1.VisibleRowCount>0) { //ASPxGridView1.Columns[命令列索引] (ASPxGridView1.Columns[4] as GridViewCommandColumn).NewButton.Visible = false; } }


六。AspxGridView常见问题 A.点Edit或new按钮,Delete出来Update和cancel,编辑完数据后点击Update,出错:“不支持所指定的方法”.解决方法: 1、确保ASPxGridView已设置了KeyFieldName 2、确保ASPxGridView已定义了事件 OnRowDeleting, OnRowInserting, OnRowUpdating 3、后台代码中有对 OnRowDeleting, OnRowInserting, OnRowUpdating 事件的处理。
2、 绑定主从表(IList)
List的元素带有List属性(Category.Products),并且需要以Grid嵌套的方式显示。
1、 选中GridView(gird1),右键菜单选择“编辑模板”—“DetailRow”,页面打开明细数据界面,向DetailRow添加一个新的ASPxGridView (grid2)显示明细数据,可以设定grid2的Columns相关属性。Grid2.SettingsDetail.IsDetailGrid = true 指定grid2作为从表数据表格。
2、 增加grid2 DataBinding事件
Code protected void grid2_DataBinding(object sender, EventArgs e) { DevExpress.Web.ASPxGridView.ASPxGridView grid = sender as DevExpress.Web.ASPxGridView.ASPxGridView; if ((grid != null) && (dict != null)) { int i = (int) grid.GetMasterRowKeyValue();/*取主表记录的Key,主表grid必须设定KeyFieldName*/ if (i >= 0) { grid.DataSource = dict.Products;//通过Key定位数据,指定子表数据源 } } }
3、 右键点击DetailRow,选“结束模板编辑”。修改grid1.SettingsDetail的相关属性
Bool AllowOnlyOneMasterRowExpanded 默认False,是否只允许主表一行展开。True后展开第二行明细记录时,会关闭上次展开的明细记录。
Bool ShowDetailButton 是否显示明细按钮,True显示一个“+”在行首
Bool ShowDetailRow True显示明细数据
4、 过滤数据
方式一、展开列标题旁边的过滤清单过滤数据(类似Excel的过滤方式) grid.Settings.ShowHeaderFilterButton = true;过滤清单列出了该列出现的所有数据。还可以自定义过滤清单的内容,用法参阅:http://demos.devexpress.com/ASPxGridViewDemos/Filtering/HeaderFilter.aspx
方式二、在列头显示字段过滤条件输入框 grid.Settings.ShowFilterRow = true; 显示条件判断方式下拉列表grid.Settings.ShowFilterRowMenu = true;

5、 用户自定义列显示
Grid.SettingCustomizationWindow
Enabled 运行自定义列显示
PopupHorizontalAlign 列编辑窗水平对齐方式
PopupVerticalAlign 列编辑窗垂直对齐方式

通过JavaScript打开列编辑框。

Code <script. type="text/javascript">
<%-- 变更按钮的标题 --%> function UpdateCustomizationWindowValue() { var element = document.getElementById("btnCustWindow"); if(element == null) return; element.value = (grid.IsCustomizationWindowVisible() ? "Hide" : "Show") + " Customization Window"; } <%-- 显示自定义列编辑窗--%> function ShowHideCustomizationWindow() { if(grid.IsCustomizationWindowVisible()) grid.HideCustomizationWindow(); else grid.ShowCustomizationWindow(); UpdateCustomizationWindowValue(); } </script> <input id="btnCustWindow" type="button" value="Show Customization Window" nclick="ShowHideCustomizationWindow();"/>
<dxwgv:ASPxGridView ID="gird"…………………….> ………………………….. <ClientSideEvents CustomizationWindowCloseUp="function(s, e) { UpdateCustomizationWindowValue(); }" /> </dxwgv:ASPxGridView>

小技巧: AspxGridView在绑定数据的时候,如果数据列的类型是日期型,这时应该用“GridViewDataColumn”而不应该用“GridViewDataTextColumn”,这样的话,数据显示出来的格式就如“1900-01-01",而不是"1900-01-01 0:00:00".
AspxGridView中查找控件不能像GridView中一样用FindControl,而应该用 FindRowCellTemplateControl方法。
应该彻底放弃Response.Write()方法来输出字符中,如果页面中调用了Response.Write方法,会导致AspxGridView的客户端排序功能失去控件,具体表现为:点击排序时,显示loading,然后就没有反应了,一直loading下去,不会完成排序操作。
利用ASPxGridViewExporter导出aspxgridview中的数据时,如果有数据列,虽然我们可以利用 <PropertiesDateEdit DisplayFormatString="{0:yyyy-MM-dd}">
</PropertiesDateEdit>来格式化aspxgridview的日期列显示样式,但是我们却无法控制利用ASPxGridViewExporter导出后的excel文件中的样式,这时,导出的excel文件中,日期列的显示格式为数据库中aspxgridview数据源中日期列的格式。所以如果想控制导出后excel日期列的格式,必须从aspxgridview的数据源下手,在数据源中格式化日期列,就可以达到格式化导出后excel文件日期列格式的目的了 四:导出ASPxGridView的数据 添加一个ASPxGridViewExporter控件到Page,设置GridViewID为需要导出数据的aspxgridview,调用以下方法实现导出。 ASPxGridViewExporter1.WriteXlsToResponse() ASPxGridViewExporter1.WriteCvsToResponse() ASPxGridViewExporter1.WritePdfToResponse() ASPxGridViewExporter1.WriteRtfToResponse() 关于导出EXCEL日期格式,操作EXCEL,设置单元格为相应的格式即可 1.遍历主键列中的所有数据.
List<object> keyValue = AspxGridView1.GetSelectedFieldValues("kid");
string str;
foreach(object key in keyValue)
{
str = key.ToString(); } 2.动态选择某一行.
//n为要选择的行数
AspxGridView1.Selection.SetSelection(n,true);
3.获取所有选择行中的数据.这里要注意去这里查看

http://space.itpub.net/?uid-23109131-action-viewspace-itemid-676010

4.问题:当AspxGridView的单元格中包含超链接按钮时,AspxGridView排序后引起超链接错位.
解决方案:设置超链接按钮的属性 EnableViewState=false;
5.根据某行的数据,动态设置选择复选框不可编辑,及动态设置行背景色.
protected void AspxGridView1_HtmlRowPrepared(object sender,ASPxGridViewTableRowEventArgs e)
{
//判断bomcode是否为空.
  if(e.GetValue("bomcode").ToString().Trim() == "")
{
//设置选择复选框不可编辑
e.Row.Cell[0].Enabled = false;
//将背景色设置为浅灰色
   e.Row.BackColor = Color.LightGray;
} }
//表中有个链接地址,实现点链接地址下载文件,引用命名空间DevExpress.Web.ASPxGridView; //如果不想动态绑定,只需要设置列的FieldName为链接址址字段,TextField为显示链接名称的字段即可 protected void ASPxGridView1_Init(object sender, EventArgs e) { GridViewDataHyperLinkColumn colLink = new GridViewDataHyperLinkColumn();//实例化一个超链接列 colLink.Caption = "下载吧";//设置列头 colLink.PropertiesHyperLinkEdit.Text = "这是个链接";//显示链接的名称 colLink.PropertiesHyperLinkEdit.TextField = "LinkName";//显示链接名称要绑定的字段 colLink.FieldName = "LinkURL";//该列绑定的字段 colLink.PropertiesHyperLinkEdit.NavigateUrlFormatString="{0}";//链接地址就是该列绑定的字段
colLink.Visible = true; colLink.Width = 200; ASPxGridView1.Columns.Add(colLink);//把该列添加到ASPxGridview
}

using System.Collections.Generic;
//取得当前控件值的集合 直接寻找控件的ID
List <object> keyValues = this.GridViewmethod.GetSelectedFieldValues("F_XXX");//控件的ID
foreach (object key in keyValues)//循环遍历出来
{
}
2.在AspGridView取得某一行
List <object> keyValues = this.GridViewmethod.GetCurrentPageRowValues("F_xxxxx");//F_xxxxx是主键的值
foreach (object key in keyValues)//循环遍历这一行的每一列的数据
{
}

时间: 2025-01-18 08:06:16

ASPXGridView使用小结的相关文章

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

【转载】小结一下linux 2.6内核的四种IO调度算法

在LINUX 2.6中,有四种关于IO的调度算法,下面综合小结一下: 1) NOOP NOOP算法的全写为No Operation.该算法实现了最最简单的FIFO队列,所有IO请求大致按照先来后到的顺序进行操作.之所以说“大致”,原因是NOOP在FIFO的基础上还做了相邻IO请求的合并,并不是完完全全按照先进先出的规则满足IO请求.NOOP假定I/O请求由驱动程序或者设备做了优化或者重排了顺序(就像一个智能控制器完成的工作那样).在有些SAN环境下,这个选择可能是最好选择.Noop 对于 IO

Android基础入门教程——8.1.3 Android中的13种Drawable小结 Part 3

Android基础入门教程--8.1.3 Android中的13种Drawable小结 Part 3 标签(空格分隔): Android基础入门教程 本节引言: 本节我们来把剩下的四种Drawable也学完,他们分别是: LayerDrawable,TransitionDrawable,LevelListDrawable和StateListDrawable, 依旧贴下13种Drawable的导图: 1.LayerDrawable 层图形对象,包含一个Drawable数组,然后按照数组对应的顺序来

Android基础入门教程——8.1.2 Android中的13种Drawable小结 Part 2

Android基础入门教程--8.1.2 Android中的13种Drawable小结 Part 2 标签(空格分隔): Android基础入门教程 本节引言: 本节我们继续来学习Android中的Drawable资源,上一节我们学习了: ColorDrawable:NinePatchDrawable: ShapeDrawable:GradientDrawable!这四个Drawable~ 而本节我们继续来学习接下来的五个Drawable,他们分别是: BitmapDrawable:Insert

安卓小结《1》

Activity的生命周期和启动模式的知识点小结: 1.如果Activity切换的时候,新Activity是透明,旧的不会走onStop方法. 2.新的Activity切换的时候,旧Activity  会先执行,onpause,然后才会启动新的activity. 3. Activity在异常情况下被回收时,onSaveInstanceState方法会被回调,回调时机是在onStop之前,当Activity被重新创建的时 候,onRestoreInstanceState方法会被回调,时序在onSt

date命令小结

在写linux shell脚本时,date是经常要用到的一个命令,这篇文章就此做个小结,以防自己用到时到处找 1.最基本的,显示当前的具体时期:直接敲入 date即可,如下, [email protected]:~/scripts$ date 2015年 01月 03日 星期六 21:46:49 CST 2.显示某个文件上次修改的时间:date -r file [email protected]:~/scripts$ date -r save.sh 2015年 01月 02日 星期五 23:29

java 小结2 多态问题。

面向对象这个东西,其实我们一直是不是都没有感觉到自己在用,以后我一定要用用.以前学c#时候认真的看过一次,最近一直研究java.随便再看看. 多态问题: 在java中多态分为(1)编译时多态和(2)运行时多态 (1)编译时多态比较容易理解:其实就是通过方法重载,就是方法的重载,同一个函数名但是可以参数不一样.这就是重载(so easy) (2)运行时多态:这个是通过方法覆盖实现的,就是子类在继承父类的时候,通过对某个方法的重写,覆盖父类方法. 简单的说:比如我们有个父类A,子类B通过Extend

php操作xml小结

<?php #php操作xml,SimpleXMLElement类小结 header('Content-type:text/html;charset=utf-8;'); //1.构造函数 /* $xmlstring=<<<XML <?xml version="1.0" encoding="utf-8"?> <note  xmlns:b="http://www.w3school.com.cn/example/&quo

网络安全解决之个人小结

方案分为安全技术部分和安全管理部分. 安全技术部分: 1.物理安全 需要建设独立的计算机机房,满足防水.防火.防静电等要求.机房设置门禁和视频监控. 2.网络安全 采用防火墙进行安全区域分割,把公司网络分为服务器区和办公区.设置不同的安全规则以防范黑客攻击.采用上网行为管理产品对网络行为和流量进行管控. 3.系统安全 采用终端安全管理系统,对客户端进行管控,重点管控网络行为.补丁升级和软件分发等.对服务器进行安全加固,保障服务器安全. 4.应用安全 对Web电子商务服务器进行漏洞扫描和加固,防范