Ext.Net GridPanel的用法--间断更新中
2015-08-20 15:58
579 查看
GridPanel 绑定的方法也有2种,一种是后台直接绑定DataBind;
另外一种是 <Proxy>
<ext:AjaxProxy Url="/Report/OrgProfit/GetOrgList">
</ext:AjaxProxy>
</Proxy>
。这里就不多介绍,之前已经有文章专门讲解过。 这个控件必须有一下几个属性:Store;Store下的Model;ColumnModel等。
蓝色区域,是需要在模板中存的字段,可以是不显示的。
ColumnModel是列模型,它表示列的显示方式。下面来看一下它的主要属性:
DataIndex:要显示的字段名,与Store中ModelField的Name相对应。
Text:列头(标题),相当于HeaderText
Width:列宽,如果要想该列自动填充,则需要使用Flex属性。
如下图代码:红色框是行号字段;蓝色框是一个转换的方法,前面有提到过怎么调用后台方法等这里不多介绍;紫红色框是一个列的删除编辑事件。
以下是编辑删除事件的代码,紫红色框是调用的后台删除代码;红色是打开一个编辑窗口进行编辑的页面(这里可以是弹出一个单独的页面;也可以是直接在本页面隐藏一个WinAddForm,编辑的时候直接显示即可)。
ext.net GridPanel 中自己提供了一个分页的控件,
<BottomBar>
<ext:PagingToolbar runat="server" ID="gridPaging" StoreID="storeUserInfo"></ext:PagingToolbar>
</BottomBar> 即可实现分页。但是当我们重新查看数据的时候,需要清空当前页码,不然传入数据库后台的还是当前的页面,会出现BUG。所以必须加上这句:App.gridPaging.moveFirst();这句代码就是清空页码数并且重新加载当前GridPanel
的数据。
GridPanel 用户可以自行编辑它的选中模板
比如添加复选框
<SelectionModel>
<ext:CheckboxSelectionModel runat="server"Mode="Simple"></ext:CheckboxSelectionModel>
</SelectionModel>
<ext:CheckboxSelectionModel runat="server" Mode="Multi" InjectCheckbox="1">
</ext:CheckboxSelectionModel>
InjectCheckbox这个属性表示用来决定Checkbox列显示在什么位置(第几列),默认为0,从第0列开始。
如果是直接单独选中行(黄色框是选中的方式,可以多行选中,可以单行选中)
<SelectionModel>
<ext:RowSelectionModel runat="server"
Mode="Single" />
</SelectionModel>
如需添加选中事件: <Listeners>
<SelectionChange Fn="selectChanged" />
</Listeners>即可。
如果需要选中某个单元格怎么设置呢?<ext:CellSelectionModel runat="server"></ext:CellSelectionModel>即可,这个只支持单个单元格选中。
选中如何获取到值呢?
RowSelectionModel和CheckboxSelectionModel 通过如下方式获取:
var selectedRows = grid.getSelectionModel().getSelection();
if (selectionModel.SelectedRows.Count == 0)
{
X.MessageBox.Alert("提示", "没有选中行").Show();
return;
}
string ids = string.Empty;
foreach (var item in selectionModel.SelectedRows)
{
item.RecordID;//这里需要自己调适一下看看数据是什么类型 然后在具体的看如何获取
}
或者: var selectDutys = grid.selModel.selected.items;
for (var i = 0; i < selectDutys.length; i++) {
selectDutys[i].data.DutyID;
}
CellSelectionModel获取方式如下:
var cellModel = grid.GetSelectionModel() as CellSelectionModel;
//获取记录ID
var recordId = cellModel.SelectedCell.RecordID;
//获取单元格值
var cellValue = cellModel.SelectedCell.Value;
//获取列名称
var columnName = cellModel.SelectedCell.Name;
//获取列号
var columnIndex = cellModel.SelectedCell.ColIndex;
//获取行号
var rowIndex = cellModel.SelectedCell.RowIndex;
如何启用Grouping功能呢?只需要在GridPanel中添加一行配置节点:
<Features>
<ext:Grouping runat="server"></ext:Grouping>
</Features>
加上这一行代码之后,我们的GridPanel就具备了分组的功能。此时我们的每一列都可以分组,如果要禁用某一列分组,在每列使用下面的代码来完成:Groupable="false"。
很多同学到这里都知道这里只是简单的分组,不太符合实际需求。我们要给我们的分组一个名称就的用一下这个属性:GroupHeaderTplString="{columnName}:{name}"字段名+字段值;GroupHeaderTplString="{name}:共{[values.rows.length]}条"这个是字段值+总共的条数。还有更多的代码,大家可以自己研究研究。
加上这个2个属性GroupByText="通过该字段分组" ShowGroupsText="取消分组",会显示如下图效果:
在Feature标签内,添加如下代码:
<ext:Summary runat="server"></ext:Summary>
然后我们需要在ColumnModel中使用SummaryColumn:
<ext:SummaryColumn runat="server" ID="columnName" Width="150" Text="XXXX" DataIndex="XXXX"
SummaryType="Count">
</ext:SummaryColumn>
SummaryType表示汇总类型,可用的有Count、Average、Max、Min、Sum等,都是我们最常用的汇总类型。
我们可以使用SummaryRender来自定义显示<SummaryRenderer Handler="return '共 ' + value + ' 条'">
</SummaryRenderer>
那么我们如何把汇总加到分组上面呢?在Features-ext:Grouping里面加上这样的代码:<ext:GroupingSummary runat="server"></ext:GroupingSummary>。就可以实现在分组中显示合计行了。
如何制作可编辑的GridPanel
要对Ext.Net GridPanel进行编辑,需要进行两步配置:
1.配置列的编辑控件(TextField、NumberField、DateField等)
2.配置编辑插件(CellEditing、RowEditing)
首先是的在需要的编辑列加上如下属性:(这里是非常简单的一个编辑框而已。更复杂的大家可以自行去做,和我们做单独的控件编辑一样的。)
<Editor>
<ext:TextField runat="server"></ext:TextField>
</Editor>
下图是比较复杂一点的编辑,跟单个绘制控件的时候没什么区别。
单元格编辑:
<Plugins>
<ext:CellEditing runat="server" ClicksToEdit="1"></ext:CellEditing>
</Plugins>
行编辑:
<Plugins>
<ext:RowEditing runat="server" ClicksToEdit="1"></ext:RowEditing>
</Plugins>
上面也是相对简单的代码,下面我看一下比较复杂的:
红色是设置保存取消按钮的显示名称;第二个红色框是取消编辑的事件;蓝色框是编辑之前的事件;绿色是编辑中的事件(也可以这样写e.record.set('ProjectTypeName',App.gpProjectType.getRawValue())给数据源的某个值赋值);黑色是保存时的校验;
另外一种是 <Proxy>
<ext:AjaxProxy Url="/Report/OrgProfit/GetOrgList">
</ext:AjaxProxy>
</Proxy>
。这里就不多介绍,之前已经有文章专门讲解过。 这个控件必须有一下几个属性:Store;Store下的Model;ColumnModel等。
蓝色区域,是需要在模板中存的字段,可以是不显示的。
ColumnModel是列模型,它表示列的显示方式。下面来看一下它的主要属性:
DataIndex:要显示的字段名,与Store中ModelField的Name相对应。
Text:列头(标题),相当于HeaderText
Width:列宽,如果要想该列自动填充,则需要使用Flex属性。
如下图代码:红色框是行号字段;蓝色框是一个转换的方法,前面有提到过怎么调用后台方法等这里不多介绍;紫红色框是一个列的删除编辑事件。
以下是编辑删除事件的代码,紫红色框是调用的后台删除代码;红色是打开一个编辑窗口进行编辑的页面(这里可以是弹出一个单独的页面;也可以是直接在本页面隐藏一个WinAddForm,编辑的时候直接显示即可)。
ext.net GridPanel 中自己提供了一个分页的控件,
<BottomBar>
<ext:PagingToolbar runat="server" ID="gridPaging" StoreID="storeUserInfo"></ext:PagingToolbar>
</BottomBar> 即可实现分页。但是当我们重新查看数据的时候,需要清空当前页码,不然传入数据库后台的还是当前的页面,会出现BUG。所以必须加上这句:App.gridPaging.moveFirst();这句代码就是清空页码数并且重新加载当前GridPanel
的数据。
GridPanel 用户可以自行编辑它的选中模板
比如添加复选框
<SelectionModel>
<ext:CheckboxSelectionModel runat="server"Mode="Simple"></ext:CheckboxSelectionModel>
</SelectionModel>
<ext:CheckboxSelectionModel runat="server" Mode="Multi" InjectCheckbox="1">
</ext:CheckboxSelectionModel>
InjectCheckbox这个属性表示用来决定Checkbox列显示在什么位置(第几列),默认为0,从第0列开始。
如果是直接单独选中行(黄色框是选中的方式,可以多行选中,可以单行选中)
<SelectionModel>
<ext:RowSelectionModel runat="server"
Mode="Single" />
</SelectionModel>
如需添加选中事件: <Listeners>
<SelectionChange Fn="selectChanged" />
</Listeners>即可。
如果需要选中某个单元格怎么设置呢?<ext:CellSelectionModel runat="server"></ext:CellSelectionModel>即可,这个只支持单个单元格选中。
选中如何获取到值呢?
RowSelectionModel和CheckboxSelectionModel 通过如下方式获取:
var selectedRows = grid.getSelectionModel().getSelection();
if (selectionModel.SelectedRows.Count == 0)
{
X.MessageBox.Alert("提示", "没有选中行").Show();
return;
}
string ids = string.Empty;
foreach (var item in selectionModel.SelectedRows)
{
item.RecordID;//这里需要自己调适一下看看数据是什么类型 然后在具体的看如何获取
}
或者: var selectDutys = grid.selModel.selected.items;
for (var i = 0; i < selectDutys.length; i++) {
selectDutys[i].data.DutyID;
}
CellSelectionModel获取方式如下:
var cellModel = grid.GetSelectionModel() as CellSelectionModel;
//获取记录ID
var recordId = cellModel.SelectedCell.RecordID;
//获取单元格值
var cellValue = cellModel.SelectedCell.Value;
//获取列名称
var columnName = cellModel.SelectedCell.Name;
//获取列号
var columnIndex = cellModel.SelectedCell.ColIndex;
//获取行号
var rowIndex = cellModel.SelectedCell.RowIndex;
如何启用Grouping功能呢?只需要在GridPanel中添加一行配置节点:
<Features>
<ext:Grouping runat="server"></ext:Grouping>
</Features>
加上这一行代码之后,我们的GridPanel就具备了分组的功能。此时我们的每一列都可以分组,如果要禁用某一列分组,在每列使用下面的代码来完成:Groupable="false"。
很多同学到这里都知道这里只是简单的分组,不太符合实际需求。我们要给我们的分组一个名称就的用一下这个属性:GroupHeaderTplString="{columnName}:{name}"字段名+字段值;GroupHeaderTplString="{name}:共{[values.rows.length]}条"这个是字段值+总共的条数。还有更多的代码,大家可以自己研究研究。
加上这个2个属性GroupByText="通过该字段分组" ShowGroupsText="取消分组",会显示如下图效果:
汇总(Summary)用法
在Feature标签内,添加如下代码:<ext:Summary runat="server"></ext:Summary>
然后我们需要在ColumnModel中使用SummaryColumn:
<ext:SummaryColumn runat="server" ID="columnName" Width="150" Text="XXXX" DataIndex="XXXX"
SummaryType="Count">
</ext:SummaryColumn>
SummaryType表示汇总类型,可用的有Count、Average、Max、Min、Sum等,都是我们最常用的汇总类型。
我们可以使用SummaryRender来自定义显示<SummaryRenderer Handler="return '共 ' + value + ' 条'">
</SummaryRenderer>
那么我们如何把汇总加到分组上面呢?在Features-ext:Grouping里面加上这样的代码:<ext:GroupingSummary runat="server"></ext:GroupingSummary>。就可以实现在分组中显示合计行了。
如何制作可编辑的GridPanel
要对Ext.Net GridPanel进行编辑,需要进行两步配置:
1.配置列的编辑控件(TextField、NumberField、DateField等)
2.配置编辑插件(CellEditing、RowEditing)
首先是的在需要的编辑列加上如下属性:(这里是非常简单的一个编辑框而已。更复杂的大家可以自行去做,和我们做单独的控件编辑一样的。)
<Editor>
<ext:TextField runat="server"></ext:TextField>
</Editor>
下图是比较复杂一点的编辑,跟单个绘制控件的时候没什么区别。
单元格编辑:
<Plugins>
<ext:CellEditing runat="server" ClicksToEdit="1"></ext:CellEditing>
</Plugins>
行编辑:
<Plugins>
<ext:RowEditing runat="server" ClicksToEdit="1"></ext:RowEditing>
</Plugins>
上面也是相对简单的代码,下面我看一下比较复杂的:
红色是设置保存取消按钮的显示名称;第二个红色框是取消编辑的事件;蓝色框是编辑之前的事件;绿色是编辑中的事件(也可以这样写e.record.set('ProjectTypeName',App.gpProjectType.getRawValue())给数据源的某个值赋值);黑色是保存时的校验;
相关文章推荐
- 商品规格选择页面
- 二维几何模板 - 圆和球有关计算模板
- Java常见面试题
- C#多任务并行阶段控制—— Threading.Barrier
- AppHub:绕过苹果审核机制更新iOS App
- JS中的数据类型和变量内存
- Android系统架构
- Android(java)学习笔记183:判断SD卡状态和存储空间大小
- iOS开发基础篇-CoreLocation定位服务
- 关机 (系统的关机、重启以及登出 )
- c++中32位64位操作系统基本数据类型字节大小
- 堆排序及各种排序算法总结
- MR案例:路径过滤PathFilter
- Red Hat 6.4安装 OpenLDAP 2.4.23
- UVA 11582 - Colossal Fibonacci Numbers!
- [nginx] nginx + spawn-fcgi + wsapi/lua(搭建lua的web dev平台)
- blur 简单滤波
- JavaScript(二)-13-(全局方法&Number对象)
- GPS 的PPS
- 退出循环:break和continue