Ext.Net GridPanel的用法--间断更新中

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="取消分组",会显示如下图效果:



汇总(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())给数据源的某个值赋值);黑色是保存时的校验;



清空之前的排序信息 Grid.getStore().sorters.clear() 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值