一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP教程 - Coolite 中前臺獲取 GridPanel 當前選擇行值的代碼

Coolite 中前臺獲取 GridPanel 當前選擇行值的代碼

2019-09-03 11:25asp之家 ASP教程

掌握獲取 GridPanel 當前行的各個字段值的方法,需要的朋友可以參考下。

主要目的 

a. 掌握獲取 GridPanel 當前行的各個字段值的方法 
b. 掌握如何將前臺數據傳遞到后臺,并將后臺操作結果返回到前臺 
c. 掌握如何獲取和設置 button 和 textField 控件的文本值 

主要內容 

a. 我們先在頁面中添加三個 ext 組件:store, menu,gridpanel 

b. 將 gridpanel 的contextmenuID 設置為 menu 控件的ID, 從而為GridPanel 添加右鍵菜單 

復制代碼代碼如下:


<ext:Store ID="Store1" runat="server" 
onbeforestorechanged="Store1_BeforeStoreChanged" > 
<Reader> 
<ext:JsonReader ReaderID="id" > 
<Fields > 
<ext:RecordField Name="id" Type="Int"></ext:RecordField> 
<ext:RecordField Name="uid" Type="String"></ext:RecordField> 
<ext:RecordField Name="uname" Type="String"></ext:RecordField> 
<ext:RecordField Name="uage" Type="Int"></ext:RecordField> 
</Fields> 
</ext:JsonReader> 
</Reader> 
</ext:Store> 


此處的 ReaderID 可以不設置,設置了的話,就可以使用方法 GridPanel1.getSelectionModel().getSelected().id 來獲取該行 id 字段所對應的值。 
使用該方法的前提是在GridPanel 中設置其選擇方式為行選擇模式,代碼會在后面貼出。Name 對應于數據庫表中的字段名。 

復制代碼代碼如下:


<ext:Menu ID="Menu1" runat="server"> 
<Items> 
<ext:MenuItem ID="MenuItem1" runat="server" Text="查看用戶信息"> 
<Listeners> 
<Click Fn="ShowUserInfo" /> 
</Listeners> 
</ext:MenuItem> 
<ext:MenuItem ID="MenuItem2" runat="server" Text="修改用戶信息"> 
<Listeners> 
<Click Fn="ShowUserInfo" /> 
</Listeners> 
</ext:MenuItem> 
<ext:MenuItem ID="MenuItem3" runat="server" Text="添加用戶信息"> 
<Listeners> 
<Click Fn="ShowUserInfo" /> 
</Listeners> 
</ext:MenuItem> 
<ext:MenuItem ID="MenuItem4" runat="server" Text="刪除用戶信息"> 
<Listeners> 
<Click Fn="DeleteUserInfo" /> 
</Listeners> 
</ext:MenuItem> 
</Items> 
</ext:Menu> 


效果如下:
Coolite 中前臺獲取 GridPanel 當前選擇行值的代碼
c. 將 gridPanel 的 storeID 設為 store 控件的 ID, 為 Gridpanel 添加數據源 

GridPanel 源碼如下: 

復制代碼代碼如下:


<ext:GridPanel ID="GridPanel1" runat="server" ContextMenuID="Menu1" AutoHeight="true" Width="400px" 
AutoDataBind="true" StoreID="Store1"> 

<ColumnModel ID="ctl10"> 
<Columns> 
<ext:Column DataIndex="id" Header="用戶編號"> 
<PrepareCommand Args="grid, record, rowIndex, columnIndex, value" /> 
</ext:Column> 
<ext:Column DataIndex="uid" Header="用戶名"> 
<PrepareCommand Handler="" Args="grid,command,record,row,col,value" FormatHandler="False"></PrepareCommand> 
</ext:Column> 
<ext:Column DataIndex="uname" Header="用戶昵稱"> 
<PrepareCommand Handler="" Args="grid,command,record,row,col,value" FormatHandler="False"></PrepareCommand> 
</ext:Column> 
<ext:Column DataIndex="uage" Header="用戶年齡"> 
<PrepareCommand Handler="" Args="grid,command,record,row,col,value" FormatHandler="False"></PrepareCommand> 
</ext:Column> 
</Columns> 
</ColumnModel> 
<SelectionModel> 
<ext:RowSelectionModel runat="server" ID="ctl09"></ext:RowSelectionModel> 
</SelectionModel> 
<LoadMask ShowMask="true" Msg="數據正加載中..." /> 
<Listeners> 
<CellClick Fn="ShowUserInfo" /> 
</Listeners> 
</ext:GridPanel> 


此處要作幾點說明 
首先,cellclick 事件傳遞的參數可以根據 PrepareCommand 中 Args 設置的參數傳遞,比如 grid, command, record, row,col, value 
其次此處的 SelectionModel 節點內定要使用 RowSelectionModel 

d. 前臺 extjs 腳本如下: 

復制代碼代碼如下:


function ShowUserInfo(menu, e) { 
var id = GridPanel1.getSelectionModel().getSelected().id;//此處的 id 為 jsonreader 中的 readerID所設置的值 
var record = GridPanel1.getSelectionModel().getSelected(); //獲取當前選中的整條記錄,前提是必須設置為行選擇模式 

//查看詳細信息 
if (menu.id == 'MenuItem1') { 
openUserInfoWindow(record, 0); //在 objectInfo.ascx 頁面中定義 

//修改信息 
else if (menu.id == 'MenuItem2') { 
openUserInfoWindow(record, 1); 

//添加信息 
else if (menu.id == 'MenuItem3') { 
openUserInfoWindow(record, 2); 

else { 



對于該腳本,有一點要說明,就是其中要調用 openUserInfoWindow 方法,該方法在是一個用戶控件的頁面中定義的,本頁使用該控件以后,便可調用該方法。 
空間頁面源碼如下: 
說明一點: <%= ctrID.ClientID> 用戶獲取服務器端組件對象 

復制代碼代碼如下:


function openUserInfoWindow(record,id) { 
<%= Button2.ClientID %>.hide(null); 
<%= txtID.ClientID %>.setValue(record.data.id); 
<%= txtName.ClientID %>.setValue(record.data.uid); 
<%= txtNC.ClientID %>.setValue(record.data.uname); 
<%= txtAge.ClientID %>.setValue(record.data.uage); 
if(id==1) 

<%= Button1.ClientID %>.setText('修改'); //對于 button, 取值時用 text,設置時用 setText(); 
<%= txtID.ClientID %>.hide(null); 
<%= Button2.ClientID %>.show(null); 

if(id==0) 



if(id==2) 

<%= txtID.ClientID %>.setValue(''); 
<%= txtName.ClientID %>.setValue(''); 
<%= txtNC.ClientID %>.setValue(''); 
<%= txtAge.ClientID %>.setValue(''); 
<%= txtID.ClientID %>.hide(null); 
<%= Button1.ClientID %>.value="添加"; 


<%= Window1.ClientID %>.show(); 


刪除用戶的代碼如下: 

復制代碼代碼如下:


function DeleteUserInfo() { 
Ext.Msg.confirm('提示', '確定刪除用戶?', function(btn) { 
if (btn == 'yes') { 
var record = GridPanel1.getSelectionModel().getSelected(); 
GridPanel1.getStore().remove(record);//該方法若寫在后臺刪除成功后的回調函數中時,則 record 為 null 
//用戶可能只是在 gridpanel 上點擊,但并沒有選擇確定的行,此時 record 值為 null 
if (record == null) { 
Ext.Msg.alert('提示', '請選擇某一確定的記錄!'); 
return; 

Coolite.AjaxMethods.DeleteUserInfo(record.data.id.toString(), { 
success: function() { 

Ext.Msg.alert('提示', '刪除成功!'); 

}); 

else { 
return; 

}); 


請特別注意 Coolite.AjaxMethods.DeleteUserInfo 方法的使用,第一個參數是在前臺獲取,并傳遞到服務器端的參數,第二個是回調函數。 
后臺刪除代碼實現如下: 

復制代碼代碼如下:


[AjaxMethod] 
public void DeleteUserInfo(string id) 

string deletestring = "delete from T_User where id=" + id; 
sqldb.ExecuteUpdate(deletestring); 


特別注意 
本頁面的添加,修改功能都未實現,只提供了一個模式,不過使用和刪除時是一樣的。 
學習心得 
如果有不知道什么事件傳遞的參數個數和類型,可以隨便寫個錯誤的方法,然后調試的時候去分析有意義的參數。 
疑問:當實現刪除時,實現刷新時,實現修改時,我不用重新從數據庫讀取數據后再綁定到 Store, 而是通過刷新 Store 或者 GridPanel 實現

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: nxgx欧美 | 日本xxoo动图网站欧美 | 国产成人福利免费观看 | 五月色婷婷久久综合 | 大胆人gogo888体艺术在线 | 九九精品视频在线播放 | 国产精彩视频 | 999久久精品国产 | 久久精品国产亚洲AV天美18 | 亚洲第一在线播放 | 国产在线xvideos | 30分钟的高清视频在线观看 | 香港三级血恋3 | 国产91在线精品狼人 | 国产精品视频二区不卡 | 故意短裙公车被强好爽在线播放 | 精品区卡一卡2卡三免费 | 免费二区 | 第一国内永久免费福利视频 | 人人澡 人人澡碰人人看软件 | 91精品乱码一区二区三区 | 日韩高清一区二区三区不卡 | 色久网 | 摸咪网在线影院在线观看 | 色综合久久六月婷婷中文字幕 | 日本高清免费不卡在线 | 欧美亚洲免费 | 国产亚洲精品日韩香蕉网 | 好大水好多好爽好硬好深视频 | 日韩在线a视频免费播放 | 99久久九九| 国产大片网站 | 温柔校草高h | 青青草国产精品久久碰 | 国产视频自拍一区 | 亚洲精品国产国语 | 扒开斗罗美女了的胸罩和内裤漫画 | 日本精品中文字幕在线播放 | 国产精品成人自拍 | 女人肮脏的交易中文字幕未删减版 | 精品一久久香蕉国产线看观 |