DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents
上一節(jié),已經(jīng)介紹了ASPxGridView的自定義列和基本事件 ,本節(jié)接著將介紹Dev控件的客戶端事件模型。
在上節(jié)示例基礎(chǔ)上,我們增加一行菜單,使用Dev的ASPxMenu來實現(xiàn),如下圖所示。
????????????????????????????????????????????????????????????? 圖一 添加菜單的界面
增加菜單的代碼如下:
<dx:ASPxMenu ID="ASPxMenu1" runat="server" RenderMode="Lightweight" Width="100%" ItemAutoWidth="False" Theme="Aqua"><Border BorderWidth="0px" /><BorderTop BorderWidth="1px" /><Items><dx:MenuItem Text="新增" Image-Url="~/Assets/images/menu/Add_16x16.png" Name="new"></dx:MenuItem><dx:MenuItem Text="編輯" Image-Url="~/Assets/images/menu/Edit_16x16.png" Name="edit"></dx:MenuItem><dx:MenuItem Text="刪除" Image-Url="~/Assets/images/menu/Delete_16x16.png" Name="delete"></dx:MenuItem><dx:MenuItem Text="刷新" Image-Url="~/Assets/images/menu/Refresh_16x16.png" Name="refresh"></dx:MenuItem></Items> </dx:ASPxMenu>DevExpress ASP.NET的控件,如ASPxButton,ASPxLabel,ASPxMenu、ASPxPopupMenu、ASPxGridView、
ASPxTreeList、ASPxPopupControl等,它們都有一個統(tǒng)一的ClientSideEvents事件模型,提供控件的客戶端事件支持。
此例中的ASPxMenu,如何來增加ClientSideEvents客戶端事件操作呢,代碼如下:
<dx:ASPxMenu ID="ASPxMenu1" runat="server" RenderMode="Lightweight" Width="100%" ItemAutoWidth="False" Theme="Aqua"><Border BorderWidth="0px" /><BorderTop BorderWidth="1px" /><Items><dx:MenuItem Text="新增" Image-Url="~/Assets/images/menu/Add_16x16.png" Name="new"></dx:MenuItem><dx:MenuItem Text="編輯" Image-Url="~/Assets/images/menu/Edit_16x16.png" Name="edit"></dx:MenuItem><dx:MenuItem Text="刪除" Image-Url="~/Assets/images/menu/Delete_16x16.png" Name="delete"></dx:MenuItem><dx:MenuItem Text="刷新" Image-Url="~/Assets/images/menu/Refresh_16x16.png" Name="refresh"></dx:MenuItem></Items><ClientSideEvents ItemClick="function(s, e) {MenuItemClick(s,e);}" /></dx:ASPxMenu>?同時定義了Javascript方法MenuItemClick,來響應(yīng)菜單項的Click事件操作:
function MenuItemClick(s, e) {//通過e.item.name來區(qū)別由Menu的哪一項來觸發(fā)switch (e.item.name) {case "new"://新增操作break;case "edit"://編輯操作break;case "delete"://刪除操作break;case "refresh"://刷新操作break;} }客戶端菜單項Click事件的骨架有了,如果來實現(xiàn)對ASPxGridView控件的上述操作呢?
此時,我們需要了解Dev控件的另外一個重要屬性:ClientInstanceName,這個屬性,為Dev的服務(wù)端控件提供了一個客戶端的name,
定義客戶端name后,ASPxGridView服務(wù)端控件,可以在客戶端以客戶端對象身份來進(jìn)行操作和訪問。
修改代碼,為ASPxGridView1增加一個客戶端名稱:"grid"
<dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" Width="100%"OnRowInserting="ASPxGridView1_RowInserting" ClientInstanceName="grid"OnRowUpdating="ASPxGridView1_RowUpdating"DataSourceID="XpoDataSource1" KeyFieldName="UserID" Theme="Aqua"> ...... </dx:ASPxGridView>修改MenuItemClick方法,增加【新增】、【編輯】操作代碼:
function MenuItemClick(s, e) {//通過e.item.name來區(qū)別由Menu的哪一項來觸發(fā)switch (e.item.name) {case "new"://新增操作grid.AddNewRow();break;case "edit":var index = grid.GetFocusedRowIndex();if (index != -1) {grid.StartEditRow(index);} else {alert('請選擇要編輯的記錄!');}//編輯操作break;case "delete"://刪除操作break;case "refresh"://刷新操作break;}}?點擊菜單項的【新增】,顯示新增界面如下:
???????????????????????????????????????????????????????????????????? 圖二 新增界面
點擊【編輯】,顯示界面如下:
??? 圖三 編輯界面
注意:【新增】、【編輯】操作,分別使用了ASPxGridView客戶端對象的方法:
新增行:????? grid.AddNewRow();
獲取行索引:grid.GetFocusedRowIndex();
編輯行:????? grid.StartEditRow(index);
?
接下來,如何實現(xiàn)【刪除】和【刷新】操作呢?這將使用Dev控件強(qiáng)大的Callback事件回調(diào)機(jī)制,通過客戶端的PerformCallback
與服務(wù)端的CustomCallback事件回調(diào)結(jié)合,服務(wù)端的回調(diào)方法對客戶端事件作出響應(yīng)。
首先,我們增加服務(wù)端的Callback事件代碼,選擇OnCustomCallback,點擊新增事件,后臺代碼自動完成對事件的添加:
添加事件如下:
生成的回調(diào)方法:
protected void ASPxGridView1_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e){}接著,繼續(xù)修改MenuItemClick方法,增加對Delete事件代碼:
function MenuItemClick(s, e) {//通過e.item.name來區(qū)別由Menu的哪一項來觸發(fā)switch (e.item.name) {case "new"://新增操作grid.AddNewRow();break;case "edit":var index = grid.GetFocusedRowIndex();if (index != -1) {grid.StartEditRow(index);} else {alert('請選擇要編輯的記錄!');}//編輯操作break;case "delete":var key = grid.GetRowKey(grid.GetFocusedRowIndex());if (key != null && key != "") {if (window.confirm('你確定要刪除這條記錄嗎?')) {grid.PerformCallback("delete@" + key);}}//刪除操作break;case "refresh"://刷新操作break;} }?繼續(xù)修改服務(wù)端回調(diào)方法:
protected void ASPxGridView1_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e){string[] strParames = e.Parameters.ToString().Split(new char[] { '@' });switch (strParames[0]){case "delete":CriteriaOperator criteria = CriteriaOperator.Parse("[UserID]='" + strParames[1] + "'");Users obj = session.FindObject<Users>(criteria);obj.Delete();ASPxGridView1.DataBind();break;} }完成上述修改后,點擊【刪除】按鈕,彈出刪除確認(rèn)對話框,點擊”確定“,記錄將被刪除,ASPxGridView數(shù)據(jù)被刷新。
?
?????????????????????????????????????????????????????????圖四 點擊刪除,彈出確認(rèn)對話框,并重新綁定數(shù)據(jù)
同理,我們實現(xiàn)【刷新】操作如下:
case "refresh":grid.PerformCallback("refresh@");//刷新操作break;繼續(xù)修改回調(diào)方法:
protected void ASPxGridView1_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e){string[] strParames = e.Parameters.ToString().Split(new char[] { '@' });switch (strParames[0]){case "delete":CriteriaOperator criteria = CriteriaOperator.Parse("[UserID]='" + strParames[1] + "'");Users obj = session.FindObject<Users>(criteria);obj.Delete();ASPxGridView1.DataBind();break;case "refresh":ASPxGridView1.DataBind();break;}}此時點擊【刷新】按鈕,數(shù)據(jù)將被刷新,如果效果不明顯,可以手工修改數(shù)據(jù)庫中的數(shù)據(jù),以驗證刷新的效果。
注意:【刪除】操作,使用了ASPxGridView客戶端對象的方法:
獲取行主鍵:grid.GetRowKey(grid.GetFocusedRowIndex());
?
為了使【刪除】、【刷新】操作在客戶端能得到反饋,還可以在ASPxGridView的ClientSideEvents事件中增加:EndCallback,
修改服務(wù)端【刪除】、【刷新】回調(diào)方法,增加如下代碼:
ASPxGridView1.JSProperties.Remove("cpMsg");
ASPxGridView1.JSProperties.Add("cpMsg", "刪除成功");
注意:按Dev控件約定,此處添加JSProperties的key,只能以 cp 為前綴。
protected void ASPxGridView1_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e){string[] strParames = e.Parameters.ToString().Split(new char[] { '@' });switch (strParames[0]){case "delete":CriteriaOperator criteria = CriteriaOperator.Parse("[UserID]='" + strParames[1] + "'");Users obj = session.FindObject<Users>(criteria);obj.Delete();ASPxGridView1.DataBind();ASPxGridView1.JSProperties.Remove("cpMsg");ASPxGridView1.JSProperties.Add("cpMsg", "刪除成功");break;case "refresh":ASPxGridView1.DataBind();ASPxGridView1.JSProperties.Remove("cpMsg");ASPxGridView1.JSProperties.Add("cpMsg", "刷新成功");break;}}客戶端響應(yīng)EndCallback方法:
function EndCallback(s, e) {if (s.cpMsg) {alert(s.cpMsg);s.cpMsg = null;} }此時,再進(jìn)行【刪除】、【刷新】按鈕完成操作時,會彈出提醒框。
????????????????????????????????????????????????????????????? 圖五 EndCallback 刷新返回消息
????????????????????????????????????????????????????????????? 圖六 EndCallback 刪除返回消息
在此基礎(chǔ)上,通過對EndCallback返回的信息進(jìn)行處理,可以擴(kuò)展更友好的提醒。
?
除了CustomCallback,還有CustomDataCallback、CustomButtonCallback,使用方法類似,細(xì)節(jié)稍有不同。
CustomDataCallback:可用于前后臺的數(shù)據(jù)傳輸和回調(diào)。
CustomButtonCallback:可以針對特定服務(wù)端Button進(jìn)行回調(diào)。
注意:對于ASPxTreeList控件,我們將使用到的客戶端方法。
新增樹結(jié)點:?? tree.StartEditNewNode();
獲取樹節(jié)點的主鍵:var key = tree.GetFocusedNodeKey();
在下一節(jié)中,將介紹ASPxTreeList的使用,到時再對CustomDataCallback,CustomButtonCallback的使用進(jìn)行
詳細(xì)描述。
?
最后附上完整代碼。
前臺代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register Assembly="DevExpress.Web.v12.2, Version=12.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxMenu" TagPrefix="dx" %><%@ Register Assembly="DevExpress.Xpo.v12.2.Web, Version=12.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Xpo" TagPrefix="dx" %><%@ Register Assembly="DevExpress.Web.v12.2, Version=12.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %><%@ Register Assembly="DevExpress.Web.v12.2, Version=12.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title></title><script type="text/javascript">function MenuItemClick(s, e) {//通過e.item.name來區(qū)別由Menu的哪一項來觸發(fā)switch (e.item.name) {case "new"://新增操作grid.AddNewRow();break;case "edit":var index = grid.GetFocusedRowIndex();if (index != -1) {grid.StartEditRow(index);} else {alert('請選擇要編輯的記錄!');}//編輯操作break;case "delete":var key = grid.GetRowKey(grid.GetFocusedRowIndex());if (key != null && key != "") {if (window.confirm('你確定要刪除這條記錄嗎?')) {grid.PerformCallback("delete@" + key);}}//刪除操作break;case "refresh":grid.PerformCallback("refresh@");//刷新操作break;}}function EndCallback(s, e) {if (s.cpMsg) {alert(s.cpMsg);s.cpMsg = null;}}</script> </head> <body><form id="form1" runat="server"><div><p><h1>Dev控件的客戶端事件模型</h1></p><dx:ASPxMenu ID="ASPxMenu1" runat="server" RenderMode="Lightweight" Width="100%" ItemAutoWidth="False" Theme="Aqua"><Border BorderWidth="0px" /><BorderTop BorderWidth="1px" /><Items><dx:MenuItem Text="新增" Image-Url="~/Assets/images/menu/Add_16x16.png" Name="new"></dx:MenuItem><dx:MenuItem Text="編輯" Image-Url="~/Assets/images/menu/Edit_16x16.png" Name="edit"></dx:MenuItem><dx:MenuItem Text="刪除" Image-Url="~/Assets/images/menu/Delete_16x16.png" Name="delete"></dx:MenuItem><dx:MenuItem Text="刷新" Image-Url="~/Assets/images/menu/Refresh_16x16.png" Name="refresh"></dx:MenuItem></Items><ClientSideEvents ItemClick="function(s, e) {MenuItemClick(s,e);}" /></dx:ASPxMenu><dx:ASPxGridView ID="ASPxGridView1" runat="server" AutoGenerateColumns="False" Width="100%"OnRowInserting="ASPxGridView1_RowInserting" ClientInstanceName="grid"OnRowUpdating="ASPxGridView1_RowUpdating" OnCustomCallback="ASPxGridView1_CustomCallback"DataSourceID="XpoDataSource1" KeyFieldName="UserID" Theme="Aqua"><ClientSideEvents EndCallback="EndCallback" /><Columns><dx:GridViewCommandColumn VisibleIndex="0" ButtonType="Image" Width="80px"><EditButton Visible="true"><Image ToolTip="編輯" Url="Assets/images/edit.png"></Image></EditButton><NewButton Visible="true"><Image ToolTip="新增" Url="Assets/images/new.png"></Image></NewButton><DeleteButton Visible="true"><Image ToolTip="刪除" Url="Assets/images/delete.png"></Image></DeleteButton><UpdateButton Visible="true"><Image ToolTip="保存" Url="Assets/images/save.gif"></Image></UpdateButton><CancelButton Visible="true"><Image ToolTip="取消" Url="Assets/images/cancel.gif"></Image></CancelButton></dx:GridViewCommandColumn><dx:GridViewDataTextColumn FieldName="UserID" ReadOnly="True" VisibleIndex="1" Visible="false"></dx:GridViewDataTextColumn><dx:GridViewDataTextColumn FieldName="UserName" VisibleIndex="2" Caption="用戶姓名"><EditFormSettings VisibleIndex="2" Visible="True" Caption="用戶姓名" /></dx:GridViewDataTextColumn><dx:GridViewDataTextColumn FieldName="FirstName" VisibleIndex="3" Caption="名" Width="80px"><EditFormSettings VisibleIndex="3" Visible="True" Caption="名" /><CellStyle HorizontalAlign="Center" /><HeaderStyle HorizontalAlign="Center" /></dx:GridViewDataTextColumn><dx:GridViewDataTextColumn FieldName="LastName" VisibleIndex="4" Caption="姓" Width="80px"><EditFormSettings VisibleIndex="4" Visible="True" Caption="姓" /><CellStyle HorizontalAlign="Center" /><HeaderStyle HorizontalAlign="Center" /></dx:GridViewDataTextColumn><dx:GridViewDataTextColumn FieldName="MiddleName" VisibleIndex="5" Caption="教名" Width="100px"><EditFormSettings VisibleIndex="5" Visible="False" Caption="教名" /><CellStyle HorizontalAlign="Center" /><HeaderStyle HorizontalAlign="Center" /></dx:GridViewDataTextColumn><dx:GridViewDataComboBoxColumn FieldName="Gender" VisibleIndex="6" Caption="性別" Width="80px"><EditFormSettings VisibleIndex="4" Visible="True" Caption="性別" /><CellStyle HorizontalAlign="Center" /><HeaderStyle HorizontalAlign="Center" /><PropertiesComboBox><Items><dx:ListEditItem Text="男" Value="男" /><dx:ListEditItem Text="女" Value="女" /></Items></PropertiesComboBox></dx:GridViewDataComboBoxColumn><dx:GridViewDataTextColumn FieldName="Hobbies" VisibleIndex="7" Caption="興趣愛好" Width="100px"><EditFormSettings VisibleIndex="5" Visible="True" Caption="興趣愛好" /><CellStyle HorizontalAlign="Center" /><HeaderStyle HorizontalAlign="Center" /><EditItemTemplate><table border="0"><tr><td><dx:ASPxCheckBox ID="ASPxCheckBox_H1" runat="server" ClientInstanceName="cb_hob1" Text="閱讀" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init"></dx:ASPxCheckBox></td><td> </td><td><dx:ASPxCheckBox ID="ASPxCheckBox_H2" ClientInstanceName="cb_hob2" runat="server" Text="思考" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init"></dx:ASPxCheckBox></td><td> </td><td><dx:ASPxCheckBox ID="ASPxCheckBox_H3" runat="server" ClientInstanceName="cb_hob3" Text="運(yùn)動" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init"></dx:ASPxCheckBox></td><td> </td><td><dx:ASPxCheckBox ID="ASPxCheckBox_H4" runat="server" ClientInstanceName="cb_hob4" Text="社交" Layout="Flow" OnInit="ASPxCheckBox_Hobbies_Init"></dx:ASPxCheckBox></td></tr></table></EditItemTemplate></dx:GridViewDataTextColumn><dx:GridViewDataTextColumn FieldName="EmailID" VisibleIndex="6" Caption="郵箱" Width="200px"><EditFormSettings VisibleIndex="6" Visible="True" Caption="郵箱" ColumnSpan="2" /></dx:GridViewDataTextColumn><dx:GridViewDataDateColumn FieldName="CreateTime" VisibleIndex="7" Caption="創(chuàng)建時間" Width="100px"><EditFormSettings VisibleIndex="5" Visible="False" Caption="創(chuàng)建時間" /><CellStyle HorizontalAlign="Center" /><HeaderStyle HorizontalAlign="Center" /></dx:GridViewDataDateColumn><dx:GridViewDataDateColumn FieldName="ModifyTime" VisibleIndex="7" Caption="修改時間" Width="100px"><EditFormSettings VisibleIndex="5" Visible="False" Caption="修改時間" /><CellStyle HorizontalAlign="Center" /><HeaderStyle HorizontalAlign="Center" /></dx:GridViewDataDateColumn></Columns><SettingsBehavior ConfirmDelete="true" AllowFocusedRow="true" AllowSelectSingleRowOnly="true" AllowSelectByRowClick="true" /><SettingsEditing EditFormColumnCount="2" /><Settings ShowFooter="True" /><SettingsText EmptyDataRow="無記錄" ConfirmDelete="確定刪除嗎?" /><SettingsPager Mode="ShowPager" PageSize="3" /></dx:ASPxGridView></div><dx:XpoDataSource ID="XpoDataSource1" runat="server" TypeName="XPOModel.DemoDB.Users"></dx:XpoDataSource></form> </body> </html>?后臺代碼:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Configuration; using DevExpress.Xpo; using DevExpress.Xpo.DB; using DevExpress.Web.ASPxGridView; using DevExpress.Web.ASPxEditors; using System.Collections; using DevExpress.Data.Filtering; using XPOModel.DemoDB; public partial class _Default : System.Web.UI.Page {DevExpress.Xpo.Session session;protected void Page_Init(object sender, EventArgs e){string provider = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;//獲取數(shù)據(jù)庫連接IDataLayer datalayer = new SimpleDataLayer(XpoDefault.GetConnectionProvider(provider, AutoCreateOption.DatabaseAndSchema));//建立數(shù)據(jù)層XPO獨有的session = new DevExpress.Xpo.Session(datalayer); //將數(shù)據(jù)層和會話綁定XpoDataSource1.Session = session;}protected void Page_Load(object sender, EventArgs e){}protected void ASPxCheckBox_Hobbies_Init(object sender, EventArgs e){ASPxCheckBox cblHb = sender as ASPxCheckBox;GridViewEditItemTemplateContainer container = cblHb.NamingContainer as GridViewEditItemTemplateContainer;string strHobbies = string.Empty;if (DataBinder.Eval(container.DataItem, "Hobbies") != null)strHobbies = DataBinder.Eval(container.DataItem, "Hobbies").ToString().Trim();if (strHobbies.Contains(cblHb.Text)){cblHb.Checked = true;}}protected void ASPxGridView1_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e){//在RowInserting時,將當(dāng)前時間賦值給“創(chuàng)建時間列”CreateTime賦值e.NewValues["CreateTime"] = DateTime.Now;GridViewDataColumn columnHobbies = ASPxGridView1.Columns["Hobbies"] as GridViewDataColumn; //取出GridView的Column//通過ASPxGridView1.FindEditRowCellTemplateControl找出自定義的CheckBoxASPxCheckBox cbH1 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H1") as ASPxCheckBox);ASPxCheckBox cbH2 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H2") as ASPxCheckBox);ASPxCheckBox cbH3 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H3") as ASPxCheckBox);ASPxCheckBox cbH4 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H4") as ASPxCheckBox);ArrayList listHobbies = new ArrayList();if (cbH1.Checked == true){listHobbies.Add(cbH1.Text);}if (cbH2.Checked == true){listHobbies.Add(cbH2.Text);}if (cbH3.Checked == true){listHobbies.Add(cbH3.Text);}if (cbH4.Checked == true){listHobbies.Add(cbH4.Text);}//通過 e.NewValues["Hobbies"]賦值e.NewValues["Hobbies"] = string.Join(",", listHobbies.ToArray());}protected void ASPxGridView1_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e){//在RowUpdating時,將當(dāng)前時間賦值給“創(chuàng)建時間列”ModifyTime賦值e.NewValues["ModifyTime"] = DateTime.Now;GridViewDataColumn columnHobbies = ASPxGridView1.Columns["Hobbies"] as GridViewDataColumn;//取出GridView的Column//通過ASPxGridView1.FindEditRowCellTemplateControl找出自定義的CheckBoxASPxCheckBox cbH1 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H1") as ASPxCheckBox);ASPxCheckBox cbH2 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H2") as ASPxCheckBox);ASPxCheckBox cbH3 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H3") as ASPxCheckBox);ASPxCheckBox cbH4 = (ASPxGridView1.FindEditRowCellTemplateControl(columnHobbies, "ASPxCheckBox_H4") as ASPxCheckBox);ArrayList listHobbies = new ArrayList();if (cbH1.Checked == true){listHobbies.Add(cbH1.Text);}if (cbH2.Checked == true){listHobbies.Add(cbH2.Text);}if (cbH3.Checked == true){listHobbies.Add(cbH3.Text);}if (cbH4.Checked == true){listHobbies.Add(cbH4.Text);}//通過 e.NewValues["Hobbies"]賦值e.NewValues["Hobbies"] = string.Join(",", listHobbies.ToArray());}protected void ASPxGridView1_CustomCallback(object sender, ASPxGridViewCustomCallbackEventArgs e){string[] strParames = e.Parameters.ToString().Split(new char[] { '@' });switch (strParames[0]){case "delete":CriteriaOperator criteria = CriteriaOperator.Parse("[UserID]='" + strParames[1] + "'");Users obj = session.FindObject<Users>(criteria);obj.Delete();ASPxGridView1.DataBind();ASPxGridView1.JSProperties.Remove("cpMsg");ASPxGridView1.JSProperties.Add("cpMsg", "刪除成功");break;case "refresh":ASPxGridView1.DataBind();ASPxGridView1.JSProperties.Remove("cpMsg");ASPxGridView1.JSProperties.Add("cpMsg", "刷新成功");break;}} }?完整源碼下載:http://pan.baidu.com/s/1kTj3QDL
博文作者:挪威森林(Coding of life)
博文出處:http://www.cnblogs.com/allenlf/
主要研究:Web開發(fā)框架、ORM、WCF、醫(yī)療行業(yè)軟件開發(fā)(HRP、EMR、CP、OA)
版權(quán)歸 挪威森林 和 博客園 所有,轉(zhuǎn)載請注明出處,謝謝合作,如有錯誤或不當(dāng)之處,歡迎指正。
轉(zhuǎn)載于:https://www.cnblogs.com/allenlf/p/4171189.html
總結(jié)
以上是生活随笔為你收集整理的DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#命令行编辑器csc.exe
- 下一篇: phoneGap异步加载JS失败