1、行双击事件

首先设置选择方式为RowSelectionModel单行选中

[html] view
plain
copy

  1. <SelectionModel>
  2. <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true">
  3. </ext:RowSelectionModel>
  4. </SelectionModel>

1.1   注册行双击事件,响应代码写在前台js中

[html] view
plain
copy

  1. <Listeners>
  2. <RowDblClick Handler="return rowDbClick(#{GridPanel1},#{Store1})" />
  3. </Listeners>

前台js代码:

[javascript] view
plain
copy

  1. <script type="text/javascript">
  2. function FnRowDbClick(paramgrid, paramstore) {
  3. var row = paramgrid.getSelectionModel().getSelections(); //选择行的个数
  4. if (row == null || row == undefined || row.length == 0) {
  5. }
  6. paramID = row[0].data.员工编号.toString();
  7. paraName = row[0].data.姓名.toString();
  8. this.Window1.setTitle("[" + paraName + "] 迟发日期明细表");
  9. // this.Window1.Title("[" + paraName + "] 迟发日期明细表"); 错误
  10. this.Window1.show();
  11. }
  12. </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 定义带参数的行双击事件

注册事件

[html] view
plain
copy

  1. <DirectEvents>
  2. <RowDblClick OnEvent="Row_DblClick" >
  3. <ExtraParams>
  4. <ext:Parameter Name="ID" Value="(GridPanel1.getSelectionModel().getSelections())[0].data.员工编号.toString()" Mode="Raw" />
  5. <ext:Parameter Name="EmployName" Value="(GridPanel1.getSelectionModel().getSelections())[0].data.姓名.toString()" Mode="Raw" />
  6. <ext:Parameter Name="Name" Value="(GridPanel1.getSelectionModel().getSelections())[0].data" Mode="Raw" />
  7. <%--   <ext:Parameter Name="Values" Value="Ext.encode(#{GridPanel1}.getRowsValues())" Mode="Raw" />--%>
  8. <ext:Parameter Name="Values" Value="Ext.encode(#{GridPanel1}.getRowsValues({selectedOnly:true}))" Mode="Raw" />
  9. </ExtraParams>
  10. </RowDblClick>
  11. </DirectEvents>

后台代码:

[csharp] view
plain
copy

  1. protected void Row_DblClick(object sender, DirectEventArgs e)  //
  2. {
  3. string json = e.ExtraParams["Values"];
  4. string Key;
  5. Dictionary<string, string>[] dic = JSON.Deserialize<Dictionary<string, string>[]>(json);
  6. if (dic.Length > 0)   //选择当行时,获取选择行的数据
  7. {
  8. string ID1 = dic[0]["员工编号"].ToString();
  9. string Name1 = dic[0]["姓名"].ToString();
  10. string Out = dic[0]["出差总天数"].ToString();
  11. string Out2 = dic[0]["出差地点总数"].ToString();
  12. }
  13. else  //选择多行时,获取选择行的数据
  14. {
  15. foreach (Dictionary<string, string> row in dic)
  16. {
  17. foreach (KeyValuePair<string, string> keyValuePair in row)
  18. {
  19. Key = keyValuePair.Key;
  20. if (Key == "员工编号")
  21. {
  22. string ID = keyValuePair.Value;
  23. continue;
  24. }
  25. else if (Key == "姓名")
  26. {
  27. string Name = keyValuePair.Value;
  28. continue;
  29. }
  30. }
  31. }
  32. }
  33. }

2、单元格命令事件,cell command(ImageCommand),自定义事件参数

在列中定义ImageCommand

[html] view
plain
copy

  1. <ext:Column Header="未发次数" DataIndex="未发次数" Width="200">
  2. <Commands>
  3. <ext:ImageCommand CommandName="query" Icon="ApplicationViewList" Text="查看">
  4. <ToolTip Text="未发日期列表" />
  5. </ext:ImageCommand>
  6. </Commands>
  7. </ext:Column>

2.1  定自定事件及事件参数,后台响应事件

[html] view
plain
copy

  1. <DirectEvents>
  2. <Command OnEvent="OnCell_Click">
  3. <ext:Parameter Name="colName" Value="this.getColumnModel().getDataIndex(colIndex)" Mode="Raw" />
  4. </ExtraParams>
  5. <ExtraParams>
  6. <ext:Parameter Name="ID" Value="record.data.编号" Mode="Raw" />
  7. </ExtraParams>
  8. <ExtraParams>
  9. <ext:Parameter Name="Name" Value="record.data.姓名" Mode="Raw" />
  10. </ExtraParams>
  11. </Command>
  12. </DirectEvents>

定义后台响应代码:

[csharp] view
plain
copy

  1. protected void OnCell_Click(object sender, DirectEventArgs e)
  2. {
  3. string m_No = e.ExtraParams["ID"].ToString();
  4. string paraName = e.ExtraParams["Name"].ToString();
  5. string paraColName = e.ExtraParams["colName"].ToString();
  6. if(paraColName == "未发次数")
  7. {
  8. this.Window1.Title = "[" + paraName + "] 未发日期明细表";
  9. InfoBindNoSendDay();
  10. this.Window1.Show();
  11. }
  12. else  if(paraColName == "迟发次数")
  13. {
  14. this.Window2.Title = "[" + paraName + "] 迟发日期明细表";
  15. InfoBindDelaySendDay();
  16. this.Window2.Show();
  17. }
  18. }

2.2  定义事件,前台js响应事件

[html] view
plain
copy

  1. <Listeners>
  2. <Command Handler="cellClick(record.data,this.getColumnModel().getDataIndex(colIndex))" />
  3. </Listeners>

js代码

[javascript] view
plain
copy

  1. <script language="javascript" type="text/javascript">
  2. function cellClick(paradata,paraCol) {
  3. paramID = paradata.员工编号.toString();
  4. paraName = paradata.姓名.toString();
  5. if (paraCol == "未发次数") {
  6. this.Window1.setTitle = "[" + paraName + "] 未发日期明细表";
  7. //this.Window1.Title="[" + paraName + "] 迟发日期明细表";   // 不能这么写,没有效果                                    this.Window1.reload();
  8. this.Window1.show();
  9. }
  10. else if (paraCol == "迟发次数") {
  11. this.Window1.setTitle = "[" + paraName + "] 迟发日期明细表";
  12. this.Window1.show();
  13. }
  14. }
  15. </script>

3、单元格选中事件 定义行选中模式为单元格选中模式,

定义选中事件

[html] view
plain
copy

  1. <SelectionModel>
  2. <ext:CellSelectionModel runat="server">
  3. <DirectEvents>
  4. <CellSelect OnEvent="Cell_Click" />
  5. </DirectEvents>
  6. </ext:CellSelectionModel>
  7. </SelectionModel>

定义事件响应代码(可写在后台,也可以写在js中,注意要有runat="server"):

[javascript] view
plain
copy

  1. <script runat="server">
  2. protected void Cell_Click(object sender, DirectEventArgs e)
  3. {
  4. CellSelectionModel sm = this.GridPanel1.SelectionModel.Primary as CellSelectionModel;
  5. this.Label1.Html = string.Format("RecordID: {0}<br />Name: {1}<br />Value: {2}<br />Row: {3}<br />Column: {4}",
  6. sm.SelectedCell.RecordID, sm.SelectedCell.Name,
  7. sm.SelectedCell.Value, sm.SelectedCell.RowIndex.ToString(), sm.SelectedCell.ColIndex.ToString());
  8. }
  9. </script>

4、前台js事件与后台事件的执行顺序

在两种事件都定义的时候,默认情况下是先执行js事件,然后执行后台事件

例如:

[html] view
plain
copy

  1. <ext:Button Width="50" ID="ButFrist"  icon="ArrowUp" runat="server" Text="上一月" StandOut="true"
  2. style="padding:5px;">
  3. <DirectEvents>
  4. <Click OnEvent="btn_Click" ></Click>
  5. </DirectEvents>
  6. <Listeners>
  7. <Click Handler="selectFrist();" />
  8. </Listeners>
  9. </ext:Button>

默认先执行js代码

[javascript] view
plain
copy

  1. <script type="text/javascript">
  2. function selectFrist() {
  3. var t = ComboBox1.getValue();
  4. var i = ComboBox1.getSelectedIndex();
  5. if (i!=-1 && (i - 1) >= 0) {
  6. ComboBox1.selectByIndex(i - 1);
  7. GridPanel1.reload();
  8. }
  9. else {
  10. Ext.Msg.alert("提示", "已到达起始月份!");
  11. return false;
  12. }
  13. return true;
  14. }
  15. </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"   ,设置滞后时间

[html] view
plain
copy

  1. <ext:Button Width="50" ID="ButFrist"  icon="ArrowUp" runat="server" Text="上一月" StandOut="true"
  2. style="padding:5px;">
  3. <DirectEvents>
  4. <Click OnEvent="btn_Click" ></Click>
  5. </DirectEvents>
  6. <Listeners>
  7. <Click Handler="selectFrist();" Delay="50" />
  8. </Listeners>
  9. </ext:Button>

转自:http://blog.csdn.net/alisa525/article/details/8081092

Ext.Net 1.x_Ext.Net.GridPanel 事件的更多相关文章

  1. Ext.Net 1.x_Ext.Net.GridPanel嵌套Checkbox

    解决办法:拼接HTML var tplchecked = '<input type="checkbox" {0}>'; var IsChecked = function ...

  2. Ext.Net 1.x_Ext.Net.GridPanel之Access数据库分页显示

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  3. Ext.Net 使用总结之GridPanel的删除事件

    1.关于Ext.net中GridPanel的删除事件 首先是GridPanel,如下: <ext:GridPanel ID="GridPanel1" runat=" ...

  4. Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel

    Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel Ext.Net GridPanel 有两种编辑模式:编辑单元格和编辑行. 单元格编辑: 行编辑: 可以看出,单元格编辑的时候,只 ...

  5. Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G

    code&monkey   Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...

  6. Ext.NET 4.1.0 GridPanel数据分页

    针对大量数据在前端展示,需要进行分页显示,这里我使用的数据量为100万,数据存储在MongoDb中(也可以存储在本地文件或其它数据库中).最终显示效果如下: 步骤如下: 1.新建程序并配置,详见htt ...

  7. Ext JS 5的声明式事件监听

    在前文<在Ext JS 5使用ViewControllers>中,简单的介绍了Ext JS 5的一项重要改进——声明式事件监听.在本文,将深度探讨如何使用声明式事件监听啦简化应用程序的视图 ...

  8. Ext.Net 使用总结之GridPanel中的选中行

    1.判断GridPanel中是否选中了某行 if (!GridPanel1.hasSelection()) { Ext.Msg.alert("提示", "请选择记录!&q ...

  9. Ext JS学习第十七天 事件机制event(二)

    此文仅有继续学习笔记: 昨天说了三种邦定事件的方法,今天说一下自定义事件 假设现在又这样的情景一个自定义的事件 没有用到事件处理的场景        母亲问孩子和不饿->             ...

随机推荐

  1. Docker内核能力机制

    能力机制(Capability)是 Linux 内核一个强大的特性,可以提供细粒度的权限访问控制. Linux 内核自 2.2 版本起就支持能力机制,它将权限划分为更加细粒度的操作能力,既可以作用在进 ...

  2. JavaScript while 循环

    JavaScript while 循环的目的是为了反复执行语句或代码块. 只要指定条件为 true,循环就可以一直执行代码块. while 循环 while 循环会在指定条件为真时循环执行代码块. 语 ...

  3. ELK学习记录一 :初识ELK

    ELK是elastic公司提供的一套完整的收集日志并分析展示的产品,分别表示Elasticsearch.Logstash和kibana. (官网截个图) 先来一段个人粗浅的认识: Elasticsea ...

  4. 纪念 参与GitHub上第一个组织

    颇为起伏的一天. 今天大连的风, 甚是喧嚣. 不过,很高兴,小项目被fork了,也成功成为了一个开源贡献者. https://github.com/HostsTools 组织 上的那个Windows- ...

  5. Thread Pools

    许多程序会动态创建数十个设置上百个线程.举个例子,一个web服务器可能在每一个新到来的请求时创建一个新线程,然后在请求完成后将其终止. 然而,创建一个新线程将会带来一定的耗费:它需要在内核中创建自身必 ...

  6. 查看oracle数据库的连接数以及用户 (转:http://blog.itpub.net/24558279/viewspace-752293/)

    select2.查询oracle的并发连接数4select3.查看不同用户的连接数6select4.查看所有用户:8select5.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):10sel ...

  7. Linux 高性能服务器编程——socket选项

    socket选项函数 功能:用来读取和设置socket文件描述符属性的方法 函数: #include <sys/scoket.h> int getsockopt ( int sockfd, ...

  8. CoreAnimation中layer动画闪烁的原因及解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 网上有一段Core Animation层动画的例子,是将vie ...

  9. 使用shell操作HDFS

    前提是都已经配置好了,可以参考hadoop伪分布安装:http://blog.csdn.net/jerome_s/article/details/25788967 linux的文件系统与hdfs的关系 ...

  10. Ant简介

    Ant,apache开源项目,基于Java的构建工具,是一个小程序.它通过自动完成所有的编译代码,运行测试以及 打包重新部署等繁琐费力的任务来帮助软件团队开发大程序: Ant的目标是自动完成所有的构建 ...