Ext.Net 1.x_Ext.Net.GridPanel 事件
1、行双击事件
首先设置选择方式为RowSelectionModel单行选中
- <SelectionModel>
- <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true">
- </ext:RowSelectionModel>
- </SelectionModel>
1.1 注册行双击事件,响应代码写在前台js中
- <Listeners>
- <RowDblClick Handler="return rowDbClick(#{GridPanel1},#{Store1})" />
- </Listeners>
前台js代码:
- <script type="text/javascript">
- function FnRowDbClick(paramgrid, paramstore) {
- var row = paramgrid.getSelectionModel().getSelections(); //选择行的个数
- if (row == null || row == undefined || row.length == 0) {
- }
- paramID = row[0].data.员工编号.toString();
- paraName = row[0].data.姓名.toString();
- this.Window1.setTitle("[" + paraName + "] 迟发日期明细表");
- // this.Window1.Title("[" + paraName + "] 迟发日期明细表"); 错误
- this.Window1.show();
- }
- </script>
1.2 注册行双击事件,响应代码写在后台cs文件中
<DirectEvents>
<RowDblClick OnEvent="Row_DblClick" > </RowDblClick>
</DirectEvents>
后台代码:
protected void OnRow_DblClick(object sender, DirectEventArgs e)
{
this.Window1.Title = "未发日期明细表";
this.Window1.Show();
}
1.3 定义带参数的行双击事件
注册事件
- <DirectEvents>
- <RowDblClick OnEvent="Row_DblClick" >
- <ExtraParams>
- <ext:Parameter Name="ID" Value="(GridPanel1.getSelectionModel().getSelections())[0].data.员工编号.toString()" Mode="Raw" />
- <ext:Parameter Name="EmployName" Value="(GridPanel1.getSelectionModel().getSelections())[0].data.姓名.toString()" Mode="Raw" />
- <ext:Parameter Name="Name" Value="(GridPanel1.getSelectionModel().getSelections())[0].data" Mode="Raw" />
- <%-- <ext:Parameter Name="Values" Value="Ext.encode(#{GridPanel1}.getRowsValues())" Mode="Raw" />--%>
- <ext:Parameter Name="Values" Value="Ext.encode(#{GridPanel1}.getRowsValues({selectedOnly:true}))" Mode="Raw" />
- </ExtraParams>
- </RowDblClick>
- </DirectEvents>
后台代码:
- protected void Row_DblClick(object sender, DirectEventArgs e) //
- {
- string json = e.ExtraParams["Values"];
- string Key;
- Dictionary<string, string>[] dic = JSON.Deserialize<Dictionary<string, string>[]>(json);
- if (dic.Length > 0) //选择当行时,获取选择行的数据
- {
- string ID1 = dic[0]["员工编号"].ToString();
- string Name1 = dic[0]["姓名"].ToString();
- string Out = dic[0]["出差总天数"].ToString();
- string Out2 = dic[0]["出差地点总数"].ToString();
- }
- else //选择多行时,获取选择行的数据
- {
- foreach (Dictionary<string, string> row in dic)
- {
- foreach (KeyValuePair<string, string> keyValuePair in row)
- {
- Key = keyValuePair.Key;
- if (Key == "员工编号")
- {
- string ID = keyValuePair.Value;
- continue;
- }
- else if (Key == "姓名")
- {
- string Name = keyValuePair.Value;
- continue;
- }
- }
- }
- }
- }
2、单元格命令事件,cell command(ImageCommand),自定义事件参数
在列中定义ImageCommand
- <ext:Column Header="未发次数" DataIndex="未发次数" Width="200">
- <Commands>
- <ext:ImageCommand CommandName="query" Icon="ApplicationViewList" Text="查看">
- <ToolTip Text="未发日期列表" />
- </ext:ImageCommand>
- </Commands>
- </ext:Column>
2.1 定自定事件及事件参数,后台响应事件
- <DirectEvents>
- <Command OnEvent="OnCell_Click">
- <ext:Parameter Name="colName" Value="this.getColumnModel().getDataIndex(colIndex)" Mode="Raw" />
- </ExtraParams>
- <ExtraParams>
- <ext:Parameter Name="ID" Value="record.data.编号" Mode="Raw" />
- </ExtraParams>
- <ExtraParams>
- <ext:Parameter Name="Name" Value="record.data.姓名" Mode="Raw" />
- </ExtraParams>
- </Command>
- </DirectEvents>
定义后台响应代码:
- protected void OnCell_Click(object sender, DirectEventArgs e)
- {
- string m_No = e.ExtraParams["ID"].ToString();
- string paraName = e.ExtraParams["Name"].ToString();
- string paraColName = e.ExtraParams["colName"].ToString();
- if(paraColName == "未发次数")
- {
- this.Window1.Title = "[" + paraName + "] 未发日期明细表";
- InfoBindNoSendDay();
- this.Window1.Show();
- }
- else if(paraColName == "迟发次数")
- {
- this.Window2.Title = "[" + paraName + "] 迟发日期明细表";
- InfoBindDelaySendDay();
- this.Window2.Show();
- }
- }
2.2 定义事件,前台js响应事件
- <Listeners>
- <Command Handler="cellClick(record.data,this.getColumnModel().getDataIndex(colIndex))" />
- </Listeners>
js代码
- <script language="javascript" type="text/javascript">
- function cellClick(paradata,paraCol) {
- paramID = paradata.员工编号.toString();
- paraName = paradata.姓名.toString();
- if (paraCol == "未发次数") {
- this.Window1.setTitle = "[" + paraName + "] 未发日期明细表";
- //this.Window1.Title="[" + paraName + "] 迟发日期明细表"; // 不能这么写,没有效果 this.Window1.reload();
- this.Window1.show();
- }
- else if (paraCol == "迟发次数") {
- this.Window1.setTitle = "[" + paraName + "] 迟发日期明细表";
- this.Window1.show();
- }
- }
- </script>
3、单元格选中事件 定义行选中模式为单元格选中模式,
定义选中事件
- <SelectionModel>
- <ext:CellSelectionModel runat="server">
- <DirectEvents>
- <CellSelect OnEvent="Cell_Click" />
- </DirectEvents>
- </ext:CellSelectionModel>
- </SelectionModel>
定义事件响应代码(可写在后台,也可以写在js中,注意要有runat="server"):
- <script runat="server">
- protected void Cell_Click(object sender, DirectEventArgs e)
- {
- CellSelectionModel sm = this.GridPanel1.SelectionModel.Primary as CellSelectionModel;
- this.Label1.Html = string.Format("RecordID: {0}<br />Name: {1}<br />Value: {2}<br />Row: {3}<br />Column: {4}",
- sm.SelectedCell.RecordID, sm.SelectedCell.Name,
- sm.SelectedCell.Value, sm.SelectedCell.RowIndex.ToString(), sm.SelectedCell.ColIndex.ToString());
- }
- </script>
4、前台js事件与后台事件的执行顺序
在两种事件都定义的时候,默认情况下是先执行js事件,然后执行后台事件
例如:
- <ext:Button Width="50" ID="ButFrist" icon="ArrowUp" runat="server" Text="上一月" StandOut="true"
- style="padding:5px;">
- <DirectEvents>
- <Click OnEvent="btn_Click" ></Click>
- </DirectEvents>
- <Listeners>
- <Click Handler="selectFrist();" />
- </Listeners>
- </ext:Button>
默认先执行js代码
- <script type="text/javascript">
- function selectFrist() {
- var t = ComboBox1.getValue();
- var i = ComboBox1.getSelectedIndex();
- if (i!=-1 && (i - 1) >= 0) {
- ComboBox1.selectByIndex(i - 1);
- GridPanel1.reload();
- }
- else {
- Ext.Msg.alert("提示", "已到达起始月份!");
- return false;
- }
- return true;
- }
- </script>
后执行cs代码:
protected void btn_Click(object sender, DirectEventArgs e)
{
ComboBox1.Text = string.Format("{0:yyyy年M月}", Convert.ToDateTime(ComboBox1.Text.ToString()).AddMonths(-1));
}
如果要先执行后台代码后执行js代码,则定义事件时加一个参数delay="50" ,设置滞后时间
- <ext:Button Width="50" ID="ButFrist" icon="ArrowUp" runat="server" Text="上一月" StandOut="true"
- style="padding:5px;">
- <DirectEvents>
- <Click OnEvent="btn_Click" ></Click>
- </DirectEvents>
- <Listeners>
- <Click Handler="selectFrist();" Delay="50" />
- </Listeners>
- </ext:Button>
转自:http://blog.csdn.net/alisa525/article/details/8081092
Ext.Net 1.x_Ext.Net.GridPanel 事件的更多相关文章
- Ext.Net 1.x_Ext.Net.GridPanel嵌套Checkbox
解决办法:拼接HTML var tplchecked = '<input type="checkbox" {0}>'; var IsChecked = function ...
- Ext.Net 1.x_Ext.Net.GridPanel之Access数据库分页显示
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- Ext.Net 使用总结之GridPanel的删除事件
1.关于Ext.net中GridPanel的删除事件 首先是GridPanel,如下: <ext:GridPanel ID="GridPanel1" runat=" ...
- Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel
Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel Ext.Net GridPanel 有两种编辑模式:编辑单元格和编辑行. 单元格编辑: 行编辑: 可以看出,单元格编辑的时候,只 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- Ext.NET 4.1.0 GridPanel数据分页
针对大量数据在前端展示,需要进行分页显示,这里我使用的数据量为100万,数据存储在MongoDb中(也可以存储在本地文件或其它数据库中).最终显示效果如下: 步骤如下: 1.新建程序并配置,详见htt ...
- Ext JS 5的声明式事件监听
在前文<在Ext JS 5使用ViewControllers>中,简单的介绍了Ext JS 5的一项重要改进——声明式事件监听.在本文,将深度探讨如何使用声明式事件监听啦简化应用程序的视图 ...
- Ext.Net 使用总结之GridPanel中的选中行
1.判断GridPanel中是否选中了某行 if (!GridPanel1.hasSelection()) { Ext.Msg.alert("提示", "请选择记录!&q ...
- Ext JS学习第十七天 事件机制event(二)
此文仅有继续学习笔记: 昨天说了三种邦定事件的方法,今天说一下自定义事件 假设现在又这样的情景一个自定义的事件 没有用到事件处理的场景 母亲问孩子和不饿-> ...
随机推荐
- 在Spring Boot中使用数据库事务
我们在前面已经分别介绍了如何在Spring Boot中使用JPA(初识在Spring Boot中使用JPA)以及如何在Spring Boot中输出REST资源(在Spring Boot中输出REST资 ...
- Jedis分片Sentinel连接池实验
Jedis分片Sentinel连接池实验 1.起因 众所周知,Redis官方HA工具Sentinel已经问世很久了,但令人费解的是,Jedis官方却迟迟没有更新它的连接池.到目前Maven库中最新的2 ...
- html5全解析
htm是软件开发中非常基础的知识,也是很重要的知识,在web中是很重要的知识点,在此梳理一下主要内容: 1.HTML是什么? 全称为HyperText Markup Language,超文本标记语言, ...
- JAVA面向对象-----构造方法
我们人出生的时候,有些人一出生之后再起名字的,但是有些人一旦出生就已经起好名字的.那么我们在java里面怎么在对象一旦创建就赋值呢? 构造方法作用 构造方法作用:对对象进行初始化. 构造函数与普通的函 ...
- 如何查看App provision profile文件中的钥匙链访问组名称
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们因为某些原因希望安全的在多个App中共享一些信息,我们可以 ...
- Android开发学习之路--RxAndroid之简单原理
学习了RxAndroid,其实也就是RxJava了,但是还是不是非常清楚到底RxAndroid有什么用呢?为什么要使用RxAndroid呢?这篇文章讲得不错,RxJava的原理.但是这里还是把整个 ...
- 编译GDAL支持ArcObjects
编译GDAL支持ArcObjects. 首先修改nmake.opt文件中对应的ArcObjects,修改后的如下所示: #uncomment to use ArcObjects ARCOBJECTS_ ...
- Xcode中不用Storyboard,用纯xib创建TabBar模式视图
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 如果要开发Tab类型视图的App,在Xcode中可以使用对应的 ...
- 根据iOS 10 的新特性,创建iMessage App,可用于自定义表情
第一. 介绍(原文作者 澳大利亚19岁少年--Davis Allie ----原文地址) 随着iOS10的发布,苹果对开发者开放了Messages应用程序,开发人员现在可以创建他们自己的各种类型 并且 ...
- 学习TensorFlow,线性回归模型
学习TensorFlow,在MNIST数据集上建立softmax回归模型并测试 一.代码 <span style="font-size:18px;">from tens ...