麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

ASP.NET-FineUI開發(fā)實(shí)踐-16(一)

2019-11-14 15:46:36
字體:
供稿:網(wǎng)友

還是基礎(chǔ)的東西,grid全選沒有事件,給加個事件,除了需要會復(fù)制粘貼外還要點(diǎn)推薦那!

 
第一步:原理
 事件被觸發(fā),方法被實(shí)現(xiàn)。
對于全選事件,被觸發(fā)有兩種方式可寫,一個是通過原生extjs方式觸發(fā),extjs就沒有全選的事件,正常思路就是選擇的行等于全部的行就觸發(fā)了,這個方法聽起來就惡心,所以還是放棄了;簡單點(diǎn)寫就是第二種方法直接通過點(diǎn)擊觸發(fā),點(diǎn)了全選就觸發(fā)全選事件了。
所以這里還是寫出來,無非就是獲取元素F12
我們操作的就是這個div主意選中前和選中后的樣式區(qū)別。
 這樣事件就寫好了
1 $('#Grid1').find('.x-column-header.x-column-header-checkbox').on('click', function () {});
方法,就是回發(fā),這里我們要觸發(fā)的是cs的事件寫法,不是回發(fā)的PageManager,而是回發(fā)的自定義事件,核心在__doPostBack的參數(shù),什么樣的參數(shù)可以觸發(fā)cs的事件而不是沒有意義,這里我參照了已有的事件rowselect事件,這時就用到了高級程序員才能用到的方法——復(fù)制
第二步:實(shí)現(xiàn)
FineUI觸發(fā)的事件就是基于的js回發(fā),rowselect 是怎么觸發(fā)的呢,右鍵查看源碼得知
 
listeners 監(jiān)聽 select 選擇 __doPostBack 兩個參數(shù),一個是Grid1 就是ID= Grid1 的控件 觸發(fā)的,第二個有意思,主意是寫死的RowSelect$ 再加上參數(shù) index 就是第幾行,原來是通過RowSelect$ 來通知后臺觸發(fā)的是行選擇事件,那么我們定位Gird.cs,找到RowSelect$ 第3218行有一段
1             if (EnableRowSelectEvent)2             {3                 string validateScript = "var args='RowSelect$'+index;";4                 validateScript += GetPostBackEventReference("#RowSelect#").Replace("'#RowSelect#'", "args");5                 string rowSelectScript = JsHelper.GetFunction(validateScript, "model", "record", "index"); //String.Format("function(model,rowIndex){{{0}}}", validateScript);6                 selectOB.Listeners.AddPRoperty("select", rowSelectScript, true);7             }

不用解釋也應(yīng)該能看出來,上面觸發(fā)select的js 代碼就是這樣輸出的。再點(diǎn)查詢,又找到一個

1             else if (eventArgument.StartsWith("RowSelect$"))2             {3                 string[] commandArgs = eventArgument.Split('$');4                 if (commandArgs.Length == 2)5                 {6                     OnRowSelect(new GridRowSelectEventArgs(Convert.ToInt32(commandArgs[1])));7                 }8             }
OnRowSelect 說明找到了,是在這里截取的__doPostBack 傳來的參數(shù)RowSelect$并且寫成了事件就可以在cs里觸發(fā)他的重寫了。
需要分析么?不需要,直接復(fù)制粘貼
1             else if (eventArgument.StartsWith("RowAllSelect$"))2             {3                 string[] commandArgs = eventArgument.Split('$');4                 if (commandArgs.Length == 2)5                 {6                     OnRowAllSelect(new GridRowAllSelectEventArgs(bool.Parse(commandArgs[1].ToString())));7                 }8             }
改成了RowAllSelect$ ,前臺給我傳這個就說明觸發(fā)cs 的OnRowAllSelect 行全選事件,為啥
 OnRowAllSelect(new GridRowAllSelectEventArgs(bool.Parse(commandArgs[1].ToString())));這句會有波浪線?因?yàn)闆]有這個方法啊!接著復(fù)制OnRowSelect 改成 OnRowAllSelect 就可以了
 
找到OnRowSelect 復(fù)制
 
 1         #region OnRowAllSelect 2         private static readonly object _rowAllSelectHandlerKey = new object(); 3         /// <summary> 4         /// 頭部全選事件(需要啟用EnableRowAllSelect) 5         /// </summary> 6         [Category(CategoryName.ACTION)] 7         [Description("頭部全選事件(需要啟用EnableRowAllSelect)")] 8         public event EventHandler<GridRowAllSelectEventArgs> RowAllSelect 9         {10             add11             {12                 Events.AddHandler(_rowAllSelectHandlerKey, value);13             }14             remove15             {16                 Events.RemoveHandler(_rowAllSelectHandlerKey, value);17             }18         }19         /// <summary>20         /// 觸發(fā)行選中事件21         /// </summary>22         /// <param name="e">事件參數(shù)</param>23         protected virtual void OnRowAllSelect(GridRowAllSelectEventArgs e)24         {25             EventHandler<GridRowAllSelectEventArgs> handler = Events[_rowAllSelectHandlerKey] as EventHandler<GridRowAllSelectEventArgs>;26             if (handler != null)27             {28                 handler(this, e);29             }30         }31         #endregion

還有哪個有波浪?GridRowAllSelectEventArgs 沒有接著建,新建cs文件,把GridRowSelectEventArgs復(fù)制過來,不要忘了寫上署名

 1 #region Comment 2 /* 3  * Project:    FineUI 4  *  5  * FileName:    GridRowAllSelectEventArgs.cs 6  * CreatedOn:   2015-10-14 7  * CreatedBy:   沒想好 935732994@QQ.com 8  *  9  * 10  * Description:11  *      ->12  *   13  * History:14  *      ->15  * 16  * 17  * 18  * 19  */20 #endregion21 using System;22 using System.Data;23 using System.Reflection;24 using System.ComponentModel;25 using System.Web.UI;26 namespace FineUI27 {28     /// <summary>29     /// 表格行選中事件參數(shù)30     /// </summary>31     public class GridRowAllSelectEventArgs : EventArgs32     {33         private bool _boolall;34         /// <summary>35         /// 選中狀態(tài)36         /// </summary>37         public bool boolall38         {39             get { return _boolall; }40             set { _boolall = value; }41         }42         /// <summary>43         /// 構(gòu)造函數(shù)44         /// </summary>45         /// <param name="rowIndex">選中狀態(tài)</param>46         public GridRowAllSelectEventArgs(bool boolall)47         {48             _boolall = boolall;49         }50     }51 }

 

這樣就應(yīng)該不報錯了,下回再寫把。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久久久成人 | 一级一级一级一级毛片 | 99亚洲伊人久久精品影院红桃 | 国产精品久久久久一区二区 | 国产亚洲精品久久久久久久久久 | 精品69人人人人 | 久久成人午夜视频 | 国产精品性夜天天视频 | free性欧美hd另类 | 免费亚洲视频在线观看 | 亚洲第一综合 | 久久国产一二区 | 成品片a免费直接观看 | 亚洲欧美国产高清 | 国产精品久久久久久久亚洲按摩 | v片在线看| 精品成人国产在线观看男人呻吟 | 久久国产免费 | 久久久久久久久亚洲精品 | 91精品国产乱码久久久久久久久 | 久久精品日产第一区二区三区 | 国产91亚洲精品一区二区三区 | 在线无码 | 最新黄色电影网站 | 高清国产午夜精品久久久久久 | 在线播放免费人成毛片乱码 | 中文字幕在线不卡视频 | 西川av在线一区二区三区 | 成年人小视频在线观看 | 黄视频网站免费在线观看 | 视频一区免费观看 | 国产精品www | 久久蜜桃香蕉精品一区二区三区 | 高清成人在线 | 毛片免费视频 | 欧美日本不卡 | 久久久久久久久日本理论电影 | 欧美三级欧美成人高清www | 久久免费视频5 | 亚洲成在人 | 91精品国产91久久久久久 |