:{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,可以动态选择,只需要这样即可
....其它列
二。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.ASPxDataDeletingEventArg
s 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.ASPxDataUpdatingEventArg
s 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();
}
六排序
在BeforeColumnSortingGroup
ing事件中重新绑定一下数据
七.分页
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, ASPxGridViewColumnDataEv
entArgs 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
GridViewDataComboBoxColu
mn).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
GridViewDataComboBoxColu
mn).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();
if (i >= 0)
{
grid.DataSource = dict.Products;//通过Key定位数据,指定子表数据源
}
}
}
3、
右键点击DetailRow,选“结束模板编辑”。修改grid1.SettingsDetail的相关属性
Bool AllowOnlyOneMasterRowExp
anded
默认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.SettingCustomizationWind
ow
Enabled 运行自定义列显示
PopupHorizontalAlign 列编辑窗水平对齐方式
PopupVerticalAlign 列编辑窗垂直对齐方式
通过JavaScript打开列编辑框。
Code