国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

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

2019-11-14 15:46:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

 
第一步:原理
 事件被觸發(fā),方法被實(shí)現(xiàn)。
對(duì)于全選事件,被觸發(fā)有兩種方式可寫,一個(gè)是通過(guò)原生extjs方式觸發(fā),extjs就沒(méi)有全選的事件,正常思路就是選擇的行等于全部的行就觸發(fā)了,這個(gè)方法聽起來(lái)就惡心,所以還是放棄了;簡(jiǎn)單點(diǎn)寫就是第二種方法直接通過(guò)點(diǎn)擊觸發(fā),點(diǎn)了全選就觸發(fā)全選事件了。
所以這里還是寫出來(lái),無(wú)非就是獲取元素F12
我們操作的就是這個(gè)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的事件而不是沒(méi)有意義,這里我參照了已有的事件rowselect事件,這時(shí)就用到了高級(jí)程序員才能用到的方法——復(fù)制
第二步:實(shí)現(xiàn)
FineUI觸發(fā)的事件就是基于的js回發(fā),rowselect 是怎么觸發(fā)的呢,右鍵查看源碼得知
 
listeners 監(jiān)聽 select 選擇 __doPostBack 兩個(gè)參數(shù),一個(gè)是Grid1 就是ID= Grid1 的控件 觸發(fā)的,第二個(gè)有意思,主意是寫死的RowSelect$ 再加上參數(shù) index 就是第幾行,原來(lái)是通過(guò)RowSelect$ 來(lái)通知后臺(tái)觸發(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)該能看出來(lái),上面觸發(fā)select的js 代碼就是這樣輸出的。再點(diǎn)查詢,又找到一個(gè)

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 說(shuō)明找到了,是在這里截取的__doPostBack 傳來(lái)的參數(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$ ,前臺(tái)給我傳這個(gè)就說(shuō)明觸發(fā)cs 的OnRowAllSelect 行全選事件,為啥
 OnRowAllSelect(new GridRowAllSelectEventArgs(bool.Parse(commandArgs[1].ToString())));這句會(huì)有波浪線?因?yàn)闆](méi)有這個(gè)方法啊!接著復(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

還有哪個(gè)有波浪?GridRowAllSelectEventArgs 沒(méi)有接著建,新建cs文件,把GridRowSelectEventArgs復(fù)制過(guò)來(lái),不要忘了寫上署名

 1 #region Comment 2 /* 3  * Project:    FineUI 4  *  5  * FileName:    GridRowAllSelectEventArgs.cs 6  * CreatedOn:   2015-10-14 7  * CreatedBy:   沒(méi)想好 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)該不報(bào)錯(cuò)了,下回再寫把。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 瑞昌市| 萝北县| 漳州市| 嵊泗县| 江津市| 庆城县| 涿鹿县| 克什克腾旗| 若羌县| 西吉县| 四川省| 万年县| 沽源县| 如皋市| 惠水县| 融水| 逊克县| 浠水县| 贵德县| 安达市| 左权县| 卢龙县| 阆中市| 景德镇市| 万年县| 西贡区| 易门县| 巴彦县| 永年县| 华宁县| 锡林郭勒盟| 囊谦县| 海林市| 江永县| 永和县| 建德市| 桦南县| 盘锦市| 花莲市| 贵定县| 樟树市|