Asp.net+Extjs实现对GridPanel分页、行内编辑、增加、删除、弹出新窗体增加、数据验证、编辑指定列、数据格式转换等功能

现实中很多项目中页面都会有复杂的操作,增删改、分页已经很普遍了。还有数据验证、编辑指定列等功能。
现把所有功能都写在一个页面中,方便需要的朋友参考。
示例用到的相关组件:
Extjs版本:3.2.1
Newtonsoft.Json.dll (把数据序列化为Json格式)文件可在Newtonsoft官网去下载http://james.newtonking.com/
AjaxPro.2.dll  (直接与页面后台通过Ajax方式交互)官网地址:http://ajaxpro.codeplex.com
Oracle.DataAccess.dll  由Oracle安装文件中获取,提供对Oracle数据库的操作相关。示例使用Oracle10g,文件路径F:\oracle\product\10.2.0\db_1\BIN 可根据自己安装目录寻取

1、Oracle数据库表:

create table MacInfo (
   MacInfo_ID           varchar2(17)                  primary key,
   Com_ID               int                  null,
   ComUser_ID           int                  null,
   Mac_Address          varchar2(17)          not null,
   Mac_ApplyIP          int                  null,
   Mac_Status           int                  null,
   Mac_UserName         nvarchar2(50)         null,
   Mac_Remark           nvarchar2(200)        null
)

2、项目相关配置:

 I、添加对Oracle.DataAccess.dll、AjaxPro.2.dll、Newtonsoft.Json.dll的引用
 II、在Web.config中添加如下配置
 <configuration>
  <location path="ajaxpro">
   <system.web>
    <httpHandlers>
     <add verb="GET,POST" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
    </httpHandlers>
   </system.web>
  </location>
 </configuration>

3、页面关键代码:
说明:页面使用到了ProgressBarPager.js(滚动条式分页)和RowEditor.js(行内编辑)文件
RowEditor.js文件做了点修改。代码如下:
onRowClick: function(g, rowIndex, e){
        if(state=='add'){}else{
            if(this.clicksToEdit == 'auto'){
                var li = this.lastClickIndex;
                this.lastClickIndex = rowIndex;
                if(li != rowIndex && !this.isVisible()){
                    return;
                }
            }
            this.startEditing(rowIndex, false);
            this.doFocus.defer(this.focusDelay, this, [e.getPoint()]);
        }
    },

    onRowDblClick: function(g, rowIndex, e){
        if(state=='add'){}else{
            this.startEditing(rowIndex, false);
            this.doFocus.defer(this.focusDelay, this, [e.getPoint()]);
        }
    },
下面是数据展示主页面代码:ExtEditPage.aspx

  1. <head runat="server">  
  2.     <title>无标题页</title>  
  3.     <link href="Extjs/resources/css/ext-all.css" mce_href="Extjs/resources/css/ext-all.css" rel="Stylesheet" type="text/css" />  
  4.     <mce:script src="Extjs/adapter/ext/ext-base.js" mce_src="Extjs/adapter/ext/ext-base.js" type="text/javascript"></mce:script>  
  5.     <mce:script src="Extjs/ext-all-debug.js" mce_src="Extjs/ext-all-debug.js" type="text/javascript"></mce:script>  
  6.     <mce:script src="Extjs/ux/ProgressBarPager.js" mce_src="Extjs/ux/ProgressBarPager.js" type="text/javascript"></mce:script>  
  7.     <link rel="stylesheet" type="text/css" href="Extjs/css/RowEditor.css" mce_href="Extjs/css/RowEditor.css" />  
  8.     <mce:script src="Extjs/ux/RowEditor.js" mce_src="Extjs/ux/RowEditor.js" type="text/javascript"></mce:script>  
  9. </head>  
  10. <body>  
  11.     <form id="form1" runat="server">  
  12.     <div>  
  13.     <mce:script type="text/javascript"><!--  
  14.     var state = '';//标记是否正在添加数据  
  15.     Ext.onReady(function(){  
  16.     function ResumeError() {  
  17.         return true;  
  18.     }  
  19.     //window.onerror = ResumeError;  
  20.     function IPLong2Str(ipLong){  
  21.         return  ( (ipLong>>24) & 0xff ) + '.' +( (ipLong>>16) & 0xff ) + '.' +( (ipLong>>8) & 0xff ) + '.' +( ipLong & 0xff );  
  22.     }  
  23.     function IPStr2Long(ipStr){  
  24.         var aIPsec=ipStr.split(".");   
  25.         for(var i=0;i<4;i++){  
  26.             if(parseInt(aIPsec[i])<16){  
  27.                 aIPsec[i]="0"+parseInt(aIPsec[i]).toString(16);  
  28.             }else{  
  29.                 aIPsec[i]=parseInt(aIPsec[i]).toString(16);  
  30.             }  
  31.         }  
  32.         return parseInt("0x"+aIPsec[0]+aIPsec[1]+aIPsec[2]+aIPsec[3]);  
  33.     }  
  34.       
  35.     Ext.QuickTips.init();  
  36.       
  37.     function showStatus(value,p,r){  
  38.         if(value=="-1")  
  39.             return "<span style="color:red;" mce_style="color:red;">未审批</span>";  
  40.         else if(value=="0")  
  41.             return "<span style="color:blue;" mce_style="color:blue;">已拒绝</span>";  
  42.         else   
  43.             return "已通过";  
  44.     }  
  45.     function showUrl(value,p,r){  
  46.         return String.format('<a href="http://www.google.com.hk?id={0}" mce_href="http://www.google.com.hk?id={0}" target="_blank" >{1}</a>',r.data.ComUser_ID,value);//r.data["ComUser_ID"]也可以  
  47.     }  
  48.     function showIP(v,p,r){  
  49.         //return ExtEditPage.ParseIPAddressToStr(v).value;  
  50.         return IPLong2Str(v);  
  51.     }  
  52.     // create the Data Store  
  53.     var macInfo = Ext.data.Record.create([{  
  54.         name: 'MacInfo_ID',  
  55.         type: 'string'  
  56.         }, {  
  57.             name: 'Com_ID',  
  58.             type: 'int'  
  59.         }, {  
  60.             name: 'Mac_UserName',  
  61.             type: 'string'  
  62.         },{  
  63.             name: 'Mac_Address',  
  64.             type: 'string'  
  65.         },{  
  66.             name: 'Mac_Status',  
  67.             type: 'int'  
  68.         },{  
  69.             name: 'ComUser_ID',  
  70.             type: 'int'  
  71.         },{  
  72.             name: 'Mac_ApplyIP',  
  73.             type: 'int'  
  74.         },{  
  75.             name: 'Mac_Remark',  
  76.             type: 'string'  
  77.         }]);  
  78.     var store = new Ext.data.GroupingStore({  
  79.         proxy: new Ext.data.HttpProxy({  
  80.             url: 'TempPage.aspx'  
  81.         }),  
  82.         reader: new Ext.data.JsonReader({ totalProperty: "totalCount", root: "topics", fields: macInfo }),  
  83.         listeners: {     
  84.                 'update': function(thiz, record, operation){            //捕捉记录发生更改的事件     
  85. //                    var mac = thiz.getAt(thiz.indexOf(record)).data;   //获得当前修改后的第一条记录     
  86. //                    if(operation == Ext.data.Record.EDIT){              //判断update时间的操作类型是否为 edit 该事件还有其他操作类型比如 commit,reject     
  87. //                        var result = ExtEditPage.Update(mac.MacInfo_ID,mac.Mac_Address,mac.Mac_Status).value;   
  88. //                        if(result==1){  
  89. //                                thiz.commitChanges();                   //如果请求成功则更新本地记录  
  90. //                        }else{     
  91. //                                Ext.Msg.alert('错误','修改失败!');     
  92. //                                thiz.rejectChanges();                   //请求失败,回滚本地记录  
  93. //                        }   
  94. //                    }     
  95.                 },     
  96.                 'remove': function(thiz,record,index){  
  97.                     if(record.data.MacInfo_ID=='SytemDefault'){}else{  
  98.                         var result = ExtEditPage.Del(record.data.MacInfo_ID).value;  
  99.                         if(result==1){  
  100.                                 thiz.commitChanges();                   //如果请求成功则更新本地记录  
  101.                                 Ext.Msg.alert("提示","删除成功!");  
  102.                         }else{     
  103.                                 Ext.Msg.alert('错误','删除失败!');    
  104.                                 store.insert(0,record);  
  105.                         }   
  106.                     }  
  107.                 }  
  108.               }  
  109.     });  
  110.     store.load({params:{start:0, limit:10}});  
  111.       
  112.     var fm = Ext.form;  
  113.     //var ideditor=new fm.TextField({ allowBlank: false });   
  114.     var editor = new Ext.ux.grid.RowEditor({  
  115.         saveText: '保存',  
  116.         cancelText: '取消',  
  117.         errorText: '错误:',  
  118.         listeners: {  
  119.            beforeedit:function(rowedit,index){  
  120.                 //var rec=store.getAt(index);   
  121. //                if(rec.data.MacInfo_ID){//检查MacInfo_ID是否有值在是否需要编辑状态未知情况下使用  
  122. //                     ideditor.disable();  
  123. //                }  
  124.             }     
  125.         }  
  126.     });  
  127.       
  128.     editor.on({  
  129.         scope: this,  
  130.         afteredit: function(roweditor,change,record,index){  
  131.             if(state=='add'){//新加新纪录  
  132.                 var value = ExtEditPage.Add(record.get('Mac_Address'),record.get('Mac_Status'),'System remark').value;//添加新纪录  
  133.                 if(value=="1"){  
  134.                     store.load({params:{start:0, limit:10}});  
  135.                     grid.store.reload();//添加成功,重新加载数据  
  136.                     state='';//还原状态  
  137.                     Ext.Msg.alert("提示","添加成功!");  
  138.                 }else{//修改记录  
  139.                     editor.stopEditing();  
  140.                     grid.store.remove(store.getAt(0)) ;  
  141.                     grid.getView().refresh();  
  142.                     state='';//还原状态  
  143.                     Ext.Msg.alert("错误","添加失败!");  
  144.                 }  
  145.             }else{  
  146.                 var result = ExtEditPage.Update(record.data.MacInfo_ID,record.data.Mac_Address,record.data.Mac_Status).value; //修改  
  147.                 if(result==1){  
  148.                     grid.store.commitChanges();  
  149.                     Ext.Msg.alert("提示","修改成功!");  
  150.                 }else{  
  151.                     Ext.Msg.alert('错误','修改失败!');  
  152.                     grid.store.rejectChanges();//请求失败,回滚本地记录  
  153.                 }  
  154.             }  
  155.         },  
  156.         canceledit: function(roweditor,change,record,index){  
  157.             if(state=='add'){  
  158.                 grid.store.remove(store.getAt(0));  
  159.                 grid.getView().refresh();  
  160.                 state='';//更新state状态,防止其他行取消编辑误删操作  
  161.             }  
  162.             editor.stopEditing();  
  163.         }  
  164.     });  
  165.       
  166.     var grid = new Ext.grid.GridPanel({  
  167.         width:820,  
  168.         height:320,  
  169.         title:'ExtJS -MacList',  
  170.         region: "center",  
  171.         store: store,  
  172.         margins: '0 5 5 5',  
  173.         loadMask: {msg:'正在加载数据...'},  
  174.         plugins: [editor],  
  175.         view: new Ext.grid.GroupingView({  
  176.             markDirty: false  
  177.         }),  
  178.         tbar: [{  
  179.             iconCls: 'icon-user-add',  
  180.             text: '添加',  
  181.             handler: function(){  
  182.                 var e = new macInfo({  
  183.                     MacInfo_ID: 'SytemDefault',  
  184.                     Com_ID: 1,  
  185.                     Mac_UserName: 'SytemDefault',  
  186.                     Mac_Address: '',  
  187.                     Mac_Status: -1,  
  188.                     ComUser_ID: 1,  
  189.                     Mac_ApplyIP: 212121,  
  190.                     Mac_Remark: 'SytemDefault'                      
  191.                 });  
  192.                 editor.stopEditing();  
  193.                 store.insert(0, e);  
  194.                 grid.getView().refresh();  
  195.                 grid.getSelectionModel().selectRow(0);  
  196.                 editor.startEditing(0);  
  197.                 state='add';  
  198.             }  
  199.         },{  
  200.             ref: '../removeBtn',  
  201.             iconCls: 'icon-user-delete',  
  202.             text: '删除',  
  203.             disabled: true,  
  204.             handler: function(){  
  205.                 editor.stopEditing();  
  206.                 var s = grid.getSelectionModel().getSelections();  
  207.                 for(var i = 0, r; r = s[i]; i++){  
  208.                     store.remove(r);  
  209.                 }  
  210.                 grid.store.reload();  
  211.             }  
  212.         }],  
  213.         // grid columns  
  214.         columns:[  
  215.         new Ext.grid.RowNumberer(),  
  216.         {  
  217.             header: "编号",  
  218.             dataIndex: 'MacInfo_ID',  
  219.             width: 150,  
  220.             sortable: true,  
  221.             editor: {  
  222.                 xtype: 'textfield',  
  223.                 disabled: true  
  224.             }  
  225.         },{  
  226.             header: "公司编号",  
  227.             dataIndex: 'Com_ID',  
  228.             width: 100,  
  229.             align: "center",  
  230.             sortable: true,  
  231.             setEditable: false,  
  232.             editor: {  
  233.                 xtype: 'textfield',  
  234.                 disabled: true  
  235.             }  
  236.         },{  
  237.             header: "用户名称",  
  238.             dataIndex: 'Mac_UserName',  
  239.             width: 150,  
  240.             sortable: true,  
  241.             renderer: showUrl,  
  242.             editor: {  
  243.                 xtype: 'textfield',  
  244.                 disabled: true  
  245.             }  
  246.         },{  
  247.             header: "Mac地址",  
  248.             dataIndex: 'Mac_Address',  
  249.             width: 150,  
  250.             align: 'center',  
  251.             sortable: true,  
  252.             editor: {  
  253.                 xtype: 'textfield',  
  254.                 allowBlank: false,  
  255.                 regex: /^([0-9a-fA-F]{2})(([/\s:-][0-9a-fA-F]{2}){5})$/,  
  256.                 regexText: "Mac地址格式不对"  
  257.             }  
  258.         },{  
  259.             header: "申请IP",  
  260.             dataIndex: 'Mac_ApplyIP',  
  261.             width: 140,  
  262.             sortable: true,  
  263.             renderer: showIP,  
  264.             editor: {  
  265.                 xtype: 'textfield',  
  266.                 allowBlank: false,  
  267.                 disabled: true  
  268.             }  
  269.         },{  
  270.             header: "状态",  
  271.             dataIndex: 'Mac_Status',  
  272.             width: 80,  
  273.             sortable: true,  
  274.             renderer: showStatus,  
  275.             editor: new fm.ComboBox({  
  276.                 typeAhead: true,  
  277.                 triggerAction: 'all',  
  278.                 // transform the data already specified in html  
  279.                 transform: 'selState',  
  280.                 lazyRender: true  
  281.             })  
  282.         }],  
  283.         // paging bar on the bottom  
  284.         bbar: new Ext.PagingToolbar({  
  285.             pageSize: 10,  
  286.             store: store,  
  287.             displayInfo: true,  
  288.             displayMsg: '共{2}条,当前为 {0} - {1} 条',  
  289.             emptyMsg: "No Macs to display",  
  290.             plugins: new Ext.ux.ProgressBarPager(),  
  291.             items:[  
  292.                 ' ',  
  293.                 {  
  294.                     enableToggle: true,  
  295.                     text: '添加',  
  296.                     toggleHandler:function(btn,pressed){  
  297.                         var win = new Ext.Window({  
  298.                             title: '新加Mac地址',  
  299.                             width: 300,  
  300.                             height: 200,  
  301.                             layout: 'form',  
  302.                             modal: true,  
  303.                             resizable: false,  
  304.                             items: [  
  305.                                 {  
  306.                                     xtype: 'form',  
  307.                                     frame:true,  
  308.                                     bodyStyle:'padding:5px 5px 0',  
  309.                                     defaultType: 'textfield',  
  310.                                     labelAlign: 'left',  
  311.                                     labelWidth: 65,  
  312.                                     defaults: {allowBlank: false,width: 180},  
  313.                                     items:   
  314.                                     [  
  315.                                         {  
  316.                                             fieldLabel: 'Mac地址',  
  317.                                             id: 'mac_new',  
  318.                                             regex: /^([0-9a-fA-F]{2})(([/\s:-][0-9a-fA-F]{2}){5})$/,  
  319.                                             regexText: "Mac地址格式不对",  
  320.                                             listeners:{  
  321.                                                 invalid: function(field,e){  
  322.                                                     Ext.getCmp("btnAdd").disable();  
  323.                                                 },  
  324.                                                 valid: function(field){  
  325.                                                     Ext.getCmp("btnAdd").enable();  
  326.                                                 }  
  327.                                             }  
  328.                                         },  
  329.                                         new Ext.form.ComboBox({  
  330.                                             fieldLabel: '状  态',  
  331.                                             typeAhead: true,  
  332.                                             triggerAction: 'all',  
  333.                                             mode: 'local',  
  334.                                             id: 'cboStatu',  
  335.                                             store: new Ext.data.ArrayStore({  
  336.                                                 id: 0,  
  337.                                                 fields: ["sValue","sDisplay"],  
  338.                                                 data: [[-1,'未审批'],[0,'已停用'],[1,'已启用']]  
  339.                                             }),  
  340.                                             valueField: 'sValue',  
  341.                                             displayField: 'sDisplay',  
  342.                                             value: '1'  
  343.                                         }),  
  344.                                         new Ext.form.TextArea({  
  345.                                             fieldLabel: '备  注',  
  346.                                             id: 'remark',  
  347.                                             height: 50,  
  348.                                             autoScroll: true,  
  349.                                             validateOnBlur: false  
  350.                                         })  
  351.                                     ],  
  352.                                     buttons: [{  
  353.                                         xtype: 'button',text: '添加',id:'btnAdd',disabled: true,  
  354.                                         handler: function(){  
  355.                                             var mac = Ext.getCmp("mac_new").getValue();  
  356.                                             var statu = Ext.getCmp("cboStatu").getValue();  
  357.                                             var rema=Ext.getCmp("remark").getValue();  
  358.                                             var re = /^([0-9a-fA-F]{2})(([/\s:-][0-9a-fA-F]{2}){5})$/;  
  359.                                             if(re.test(mac)){  
  360.                                                 var reValue = ExtEditPage.Add(mac,statu,rema).value;  
  361.                                                 if(reValue=="1"){  
  362.                                                     store.load({params:{start:0, limit:10}});  
  363.                                                     grid.store.reload();  
  364.                                                     Ext.Msg.alert("提示","添加成功!");  
  365.                                                 }else{Ext.Msg.alert("提示","添加失败!");}  
  366.                                                 win.destroy();  
  367.                                             }else{  
  368.                                                 Ext.Msg.alert("错误","Mac格式错误!");  
  369.                                                 Ext.getCmp("mac_new").focus(true);  
  370.                                             }  
  371.                                         }  
  372.                                     },  
  373.                                     {  
  374.                                         xtype: 'button',text: '退出',  
  375.                                         handler: function(){win.destroy();}  
  376.                                     }],  
  377.                                     buttonAlign: 'center'  
  378.                                 }  
  379.                             ]                              
  380.                         });  
  381.                         win.show();  
  382.                     }  
  383.                 }  
  384.             ]  
  385.         })  
  386.     });  
  387.     grid.render('topic-grid');  
  388.     grid.getSelectionModel().on('selectionchange', function(sm){  
  389.         grid.removeBtn.setDisabled(sm.getCount() < 1);  
  390.     });  
  391. });  
  392.       
  393. // --></mce:script>  
  394.     <select id="selState" style="display:none" mce_style="display:none">  
  395.         <option value="-1">未审批</option>  
  396.         <option value="1">已通过</option>  
  397.         <option value="0">已停用</option>  
  398.     </select>  
  399.     </div>  
  400.     <div id="topic-grid" style="margin:10px 0px 0px 10px" mce_style="margin:10px 0px 0px 10px" ></div>  
  401.     </form>  
  402. </body>  
  403. </html>  

页面后台:ExtEditPage.aspx.cs

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Collections;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.WebControls;  
  9. using System.Web.UI.WebControls.WebParts;  
  10. using System.Web.UI.HtmlControls;  
  11. using AjaxPro;  
  12. public partial class ExtEditPage : System.Web.UI.Page  
  13. {  
  14.     protected void Page_Load(object sender, EventArgs e){  
  15.     //如果页面有命名空间则需要写成typeof(命名空间.ExtEditPage),前台使用同样使用 命名空间.ExtEditPage  
  16.         AjaxPro.Utility.RegisterTypeForAjax(typeof(ExtEditPage));//注册,必须的  
  17.     }  
  18.     [AjaxMethod]  
  19.     public string ParseIPAddressToStr(object gip){  
  20.         int ip = Convert.ToInt32(gip);  
  21.         return string.Format("{3}.{2}.{1}.{0}",  
  22.             ip & 0xff,  
  23.             ip >> 8 & 0xff,  
  24.             ip >> 16 & 0xff,  
  25.             ip >> 24 & 0xff);  
  26.     }  
  27.     [AjaxMethod]  
  28.     public string Update(object id,object mac,object status){  
  29.         MacInfo macInfo = new MacInfo();  
  30.         macInfo.MacInfo_ID = id.ToString();  
  31.         macInfo.Mac_Address = mac.ToString();  
  32.         macInfo.Mac_Status = Convert.ToInt32(status);  
  33.         return DMacInfo.Update(macInfo).ToString();  
  34.     }  
  35.     [AjaxMethod]  
  36.     public string Del(object id){  
  37.         return DMacInfo.Delete(id.ToString()).ToString();  
  38.     }  
  39.     [AjaxMethod]  
  40.     public string Add(object mac, object status,object remark){  
  41.         MacInfo macinfo = new MacInfo();  
  42.         macinfo.MacInfo_ID = Common.GetDateStr(DateTime.Now);  
  43.         macinfo.Mac_UserName = "System@adol.cn";  
  44.         macinfo.Mac_Status = Convert.ToInt32(status);  
  45.         macinfo.Mac_Remark = remark.ToString();  
  46.         macinfo.Mac_ApplyIP = Common.ParseIPAddress("192.168.0.130");  
  47.         macinfo.Mac_Address = mac.ToString().Replace(":","-").ToUpper();  
  48.         macinfo.ComUser_ID = 271;  
  49.         macinfo.Com_ID = 130;  
  50.         return DMacInfo.Add(macinfo).ToString();  
  51.     }  
  52. }  

Common类:

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using System.Text;  
  11.   
  12. /// <summary>  
  13. /// Common 的摘要说明  
  14. /// </summary>  
  15. public class Common  
  16. {  
  17.     public Common(){    }  
  18.     /// <summary>  
  19.     /// 转换日期为字符串  
  20.     /// </summary>  
  21.     /// <param name="dt"></param>  
  22.     /// <returns></returns>  
  23.     public static string GetDateStr(DateTime dt){  
  24.         StringBuilder strDate = new StringBuilder();  
  25.         strDate.Append(dt.Year);  
  26.         strDate.Append(dt.Month < 10 ? "0" + dt.Month.ToString() : dt.Month.ToString());  
  27.         strDate.Append(dt.Day < 10 ? "0" + dt.Day.ToString() : dt.Day.ToString());  
  28.         strDate.Append(dt.Hour < 10 ? "0" + dt.Hour.ToString() : dt.Hour.ToString());  
  29.         strDate.Append(dt.Minute < 10 ? "0" + dt.Minute.ToString() : dt.Minute.ToString());  
  30.         strDate.Append(dt.Second < 10 ? "0" + dt.Second.ToString() : dt.Second.ToString());  
  31.         if(dt.Millisecond < 10)  
  32.             strDate.Append("00").Append(dt.Millisecond);  
  33.         else if(dt.Millisecond < 100)  
  34.             strDate.Append("0").Append(dt.Millisecond);  
  35.         else  
  36.             strDate.Append(dt.Millisecond);  
  37.         return strDate.ToString();  
  38.     }  
  39.     public static int ParseIPAddress(string ip){  
  40.         string[] arr = ip.Split(".".ToCharArray());  
  41.         if(arr == null || arr.Length != 4)  
  42.         {  
  43.             return 0;  
  44.         }  
  45.         int b = 0;  
  46.         int addr = 0;  
  47.         for(int i = 0; i < 4; i++)  
  48.         {  
  49.             b = int.Parse(arr[i]);  
  50.             addr |= b << ((3 - i) * 8);  
  51.         }  
  52.         return addr;  
  53.     }  
  54. }  

DMacInfo类:

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using Oracle.DataAccess.Client;  
  11. using Oracle.DataAccess.Types;  
  12. using System.Collections.Generic;  
  13. using System.Text;  
  14.   
  15. public class DMacInfo  
  16. {  
  17.     public DMacInfo(){}  
  18.   
  19.     /// <summary>  
  20.     /// 增加一条数据  
  21.     /// </summary>  
  22.     public static int Add(MacInfo model) {  
  23.         StringBuilder strSql = new StringBuilder();  
  24.         strSql.Append("insert into MacInfo(");  
  25.         strSql.Append("MacInfo_ID,Com_ID,ComUser_ID,Mac_Address,Mac_ApplyIP,Mac_Status,Mac_UserName,Mac_Remark)");  
  26.         strSql.Append(" values (");  
  27.         strSql.Append(":MacInfo_ID,:Com_ID,:ComUser_ID,:Mac_Address,:Mac_ApplyIP,:Mac_Status,:Mac_UserName,:Mac_Remark)");  
  28.         OracleParameter[] parameters = {  
  29.                     new OracleParameter(":MacInfo_ID", OracleDbType.Varchar2,17),  
  30.                     new OracleParameter(":Com_ID", OracleDbType.Int32),  
  31.                     new OracleParameter(":ComUser_ID", OracleDbType.Int32),  
  32.                     new OracleParameter(":Mac_Address", OracleDbType.Varchar2,20),  
  33.                     new OracleParameter(":Mac_ApplyIP", OracleDbType.Int32),  
  34.                     new OracleParameter(":Mac_Status", OracleDbType.Int32),  
  35.                     new OracleParameter(":Mac_UserName", OracleDbType.NVarchar2,50),                      
  36.                     new OracleParameter(":Mac_Remark", OracleDbType.NVarchar2,200)};  
  37.         parameters[0].Value = model.MacInfo_ID;  
  38.         parameters[1].Value = model.Com_ID;  
  39.         parameters[2].Value = model.ComUser_ID;  
  40.         parameters[3].Value = model.Mac_Address;  
  41.         parameters[4].Value = model.Mac_ApplyIP;  
  42.         parameters[5].Value = model.Mac_Status;  
  43.         parameters[6].Value = model.Mac_UserName;  
  44.         parameters[7].Value = model.Mac_Remark;  
  45.         return DBHelper.ExecuteCommand(strSql.ToString(),CommandType.Text,parameters);  
  46.     }  
  47.   
  48.     /// <summary>  
  49.     /// 更新一条数据  
  50.     /// </summary>  
  51.     public static int Update(MacInfo model){  
  52.         StringBuilder strSql = new StringBuilder();  
  53.         strSql.Append("update MacInfo set ");  
  54.         strSql.Append("Mac_Address=:Mac_Address,");  
  55.         strSql.Append("Mac_Status=:Mac_Status");  
  56.         strSql.Append(" where MacInfo_ID=:MacInfo_ID");  
  57.         OracleParameter[] parameters = {                      
  58.                     new OracleParameter(":Mac_Address", OracleDbType.Varchar2,17),  
  59.                     new OracleParameter(":Mac_Status", OracleDbType.Int32,4),  
  60.                     new OracleParameter(":MacInfo_ID", OracleDbType.Varchar2,17)};  
  61.         parameters[0].Value = model.Mac_Address;  
  62.         parameters[1].Value = model.Mac_Status.ToString();  
  63.         parameters[2].Value = model.MacInfo_ID;  
  64.         return DBHelper.ExecuteCommand(strSql.ToString(), CommandType.Text, parameters);  
  65.     }  
  66.   
  67.     /// <summary>  
  68.     /// 删除一条数据  
  69.     /// </summary>  
  70.     public static int Delete(string MacInfo_ID){  
  71.         StringBuilder strSql = new StringBuilder();  
  72.         strSql.Append("delete MacInfo ");  
  73.         strSql.Append(" where MacInfo_ID=:MacInfo_ID ");  
  74.         OracleParameter[] parameters = {  
  75.                     new OracleParameter(":MacInfo_ID", OracleDbType.NVarchar2,17)};  
  76.         parameters[0].Value = MacInfo_ID;  
  77.         return DBHelper.ExecuteCommand(strSql.ToString(), CommandType.Text, parameters);  
  78.     }  
  79.   
  80.     /// <summary>  
  81.     /// 得到一个对象实体  
  82.     /// </summary>  
  83.     public static MacInfo GetModel(string MacInfo_ID){  
  84.         StringBuilder strSql = new StringBuilder();  
  85.         MacInfo model = null;  
  86.         strSql.Append("select MacInfo_ID,Com_ID,ComUser_ID,Mac_Address,Mac_ApplyIP,Mac_Status,Mac_UserName,Mac_Remark from MacInfo ");  
  87.         strSql.Append(" where MacInfo_ID=:MacInfo_ID ");  
  88.         OracleParameter[] parameters = {  
  89.                     new OracleParameter(":MacInfo_ID", OracleDbType.NVarchar2,17)};  
  90.         parameters[0].Value = MacInfo_ID;  
  91.   
  92.         OracleDataReader dr = DBHelper.GetDataReader(strSql.ToString(), CommandType.Text, parameters);  
  93.         if(dr.Read()){  
  94.             model = BindReader(dr);  
  95.         }  
  96.         dr.Dispose();  
  97.         dr.Close();  
  98.         return model;  
  99.     }  
  100.   
  101.     public static List<MacInfo> GetModelList(int dataStart, int pageSize, string strWhere, out int PageCount, out int RecordCount){  
  102.         StringBuilder strSql = new StringBuilder();  
  103.         strSql.Append("select * from (select a.*,Rownum rnum from (select * from macInfo order by MacInfo_ID desc) a where ROWNUM <=" + (dataStart + pageSize) + " ) where rnum > " + dataStart + "");  
  104.         PageCount = 0;  
  105.         RecordCount = 0;  
  106.         List<MacInfo> arr = new List<MacInfo>();  
  107.         OracleDataReader dr = DBHelper.GetDataReader(strSql.ToString(), CommandType.Text);  
  108.         if(dr != null){  
  109.             MacInfo element;  
  110.             while(dr.Read()){  
  111.                 element = BindReader(dr);  
  112.                 arr.Add(element);  
  113.             }  
  114.             dr.Dispose();  
  115.             dr.Close();  
  116.         }  
  117.         strSql.Remove(0, strSql.Length);  
  118.         //strSql.Append("select max(rnum) from (select rownum rnum from macinfo);");  
  119.         strSql.Append("select count(macinfo_id) from macinfo");  
  120.         object obj = DBHelper.GetScalar(strSql.ToString(), CommandType.Text);  
  121.         if(obj != null){  
  122.             RecordCount = Convert.ToInt32(obj);  
  123.             PageCount = RecordCount % pageSize == 0 ? (RecordCount / pageSize) : (RecordCount / pageSize + 1);  
  124.         }  
  125.         return arr;  
  126.     }  
  127.   
  128.     /// <summary>  
  129.     /// 绑定对象实体  
  130.     /// </summary>  
  131.     public static MacInfo BindReader(OracleDataReader dr)  
  132.     {  
  133.         MacInfo model = null;  
  134.         if(dr != null){  
  135.             model = new MacInfo();  
  136.             if(dr["MacInfo_ID"].ToString() != ""){  
  137.                 model.MacInfo_ID = dr["MacInfo_ID"].ToString();  
  138.             }  
  139.             if(dr["Com_ID"].ToString() != ""){  
  140.                 model.Com_ID = int.Parse(dr["Com_ID"].ToString());  
  141.             }  
  142.             if(dr["ComUser_ID"].ToString() != ""){  
  143.                 model.ComUser_ID = int.Parse(dr["ComUser_ID"].ToString());  
  144.             }  
  145.             model.Mac_Address = dr["Mac_Address"].ToString();  
  146.             if(dr["Mac_ApplyIP"].ToString() != ""){  
  147.                 model.Mac_ApplyIP = int.Parse(dr["Mac_ApplyIP"].ToString());  
  148.             }  
  149.             if(dr["Mac_Status"].ToString() != ""){  
  150.                 model.Mac_Status = int.Parse(dr["Mac_Status"].ToString());  
  151.             }  
  152.             model.Mac_UserName = dr["Mac_UserName"].ToString();  
  153.             model.Mac_Remark = dr["Mac_Remark"].ToString();  
  154.             return model;  
  155.         }else{  
  156.             return null;  
  157.         }  
  158.     }  
  159. }  

DBHelper类:

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10. using System.Transactions;  
  11. using Oracle.DataAccess.Client;  
  12.   
  13. /// <summary>  
  14. /// DBHelper 的摘要说明  
  15. /// </summary>  
  16. public class DBHelper  
  17. {  
  18.     public DBHelper(){    }  
  19.     //构造函数从配置文件中读取连接字符串  
  20.     public static String ConnectionString = "Data Source=orcl;User ID=hr;Password=hr;";  
  21.   
  22.     /// <summary>  
  23.     /// 获取影响多少行  
  24.     /// </summary>  
  25.     /// <param name="queryString">T-SQL语句</param>  
  26.     /// <param name="commandType">命令类型</param>  
  27.     /// <param name="param">T-SQL参数</param>  
  28.     /// <returns>影响多少行</returns>  
  29.     public static int ExecuteCommand(string queryString, CommandType commandType, params OracleParameter[] param){  
  30.         int flag = 0;  
  31.         using(OracleConnection con = new OracleConnection(ConnectionString)){  
  32.             OracleCommand command = new OracleCommand(queryString, con);  
  33.             command.CommandType = commandType;  
  34.             if(param != null){  
  35.                 for(int i = 0; i < param.Length; i++){  
  36.                     command.Parameters.Add(param[i]);  
  37.                 }  
  38.             }  
  39.             try{  
  40.                 command.Connection.Open();  
  41.                 flag = command.ExecuteNonQuery();                  
  42.             }catch(Exception ex){  
  43.                 throw ex;  
  44.             }finally{  
  45.                 command.Connection.Close();  
  46.                 command.Dispose();  
  47.                 command = null;  
  48.             }  
  49.         }  
  50.         return flag;  
  51.     }  
  52.   
  53.     /// <summary>  
  54.     /// 获取DataSet对象  
  55.     /// </summary>  
  56.     /// <param name="queryString">T-SQL语句</param>  
  57.     /// <param name="commandType">命令类型</param>  
  58.     /// <param name="param">T-SQL参数</param>  
  59.     /// <returns>DataSet对象</returns>  
  60.     public static DataSet GetDataSet(string queryString, CommandType commandType, params OracleParameter[] param){  
  61.         DataSet ds = new DataSet();  
  62.         using(OracleConnection con = new OracleConnection(ConnectionString)){  
  63.             OracleDataAdapter adapter = new OracleDataAdapter(queryString, con);  
  64.             adapter.SelectCommand.CommandType = commandType;  
  65.             if(param != null){  
  66.                 for(int i = 0; i < param.Length; i++){  
  67.                     adapter.SelectCommand.Parameters.Add(param[i]);  
  68.                 }  
  69.             }  
  70.             try{  
  71.                 adapter.Fill(ds);  
  72.             }catch(Exception ex){  
  73.                 throw ex;  
  74.             }finally{  
  75.                 adapter.Dispose();  
  76.                 adapter = null;  
  77.             }  
  78.         }  
  79.         return ds;  
  80.     }  
  81.   
  82.     /// <summary>  
  83.     /// 获取DataReader对象  
  84.     /// </summary>  
  85.     /// <param name="queryString">T-SQL语句</param>  
  86.     /// <param name="commandType">命令类型</param>  
  87.     /// <param name="param">T-SQL参数</param>  
  88.     /// <returns>DataReader对象</returns>  
  89.     public static OracleDataReader GetDataReader(string queryString, CommandType commandType, params OracleParameter[] param){  
  90.         OracleDataReader dataReader = null;  
  91.         OracleConnection con = new OracleConnection(ConnectionString);  
  92.         OracleCommand command = new OracleCommand(queryString, con);  
  93.         command.CommandType = commandType;  
  94.         if(param != null){  
  95.             for(int i = 0; i < param.Length; i++){  
  96.                 command.Parameters.Add(param[i]);  
  97.             }  
  98.         }  
  99.         try{  
  100.             command.Connection.Open();  
  101.             dataReader = command.ExecuteReader(CommandBehavior.CloseConnection);  
  102.         }catch(Exception ex){  
  103.             throw ex;  
  104.         }  
  105.         return dataReader;  
  106.     }  
  107.   
  108.     /// <summary>  
  109.     /// 查询单个数据  
  110.     /// </summary>  
  111.     /// <param name="queryString">T-SQL语句</param>  
  112.     /// <param name="commandType">命令类型</param>  
  113.     /// <param name="param">T-SQL参数</param>  
  114.     /// <returns>Object对象</returns>  
  115.     public static Object GetScalar(string queryString, CommandType commandType, params OracleParameter[] param){  
  116.         Object obj = null;  
  117.         using(OracleConnection con = new OracleConnection(ConnectionString)){  
  118.             OracleCommand command = new OracleCommand(queryString, con);  
  119.             command.CommandType = commandType;  
  120.             if(param != null){  
  121.                 for(int i = 0; i < param.Length; i++){  
  122.                     command.Parameters.Add(param[i]);  
  123.                 }  
  124.             }  
  125.             try{  
  126.                 command.Connection.Open();  
  127.                 obj = command.ExecuteScalar();  
  128.             }catch(Exception ex){  
  129.                 throw ex;  
  130.             }finally{  
  131.                 command.Connection.Close();  
  132.                 command.Dispose();  
  133.                 command = null;  
  134.             }  
  135.         }  
  136.         return obj;  
  137.     }  
  138. }  

Model类:

  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Web;  
  5. using System.Web.Security;  
  6. using System.Web.UI;  
  7. using System.Web.UI.WebControls;  
  8. using System.Web.UI.WebControls.WebParts;  
  9. using System.Web.UI.HtmlControls;  
  10.   
  11. public class MacInfo  
  12. {  
  13.     public MacInfo(){   }  
  14.  
  15.     #region Model  
  16.     private string _macinfo_id;  
  17.     private int _com_id;  
  18.     private int _comuser_id;  
  19.     private string _mac_address;  
  20.     private int _mac_applyip;  
  21.     private int _mac_status;  
  22.     private string _mac_username;  
  23.     private string _mac_remark;  
  24.   
  25.     public string MacInfo_ID{  
  26.         set { _macinfo_id = value; }  
  27.         get { return _macinfo_id; }  
  28.     }  
  29.     public int Com_ID{  
  30.         set { _com_id = value; }  
  31.         get { return _com_id; }  
  32.     }  
  33.     public int ComUser_ID{  
  34.         set { _comuser_id = value; }  
  35.         get { return _comuser_id; }  
  36.     }  
  37.     public string Mac_Address{  
  38.         set { _mac_address = value; }  
  39.         get { return _mac_address; }  
  40.     }  
  41.     public int Mac_ApplyIP{  
  42.         set { _mac_applyip = value; }  
  43.         get { return _mac_applyip; }  
  44.     }  
  45.     public int Mac_Status{  
  46.         set { _mac_status = value; }  
  47.         get { return _mac_status; }  
  48.     }  
  49.     public string Mac_UserName{  
  50.         set { _mac_username = value; }  
  51.         get { return _mac_username; }  
  52.     }  
  53.     public string Mac_Remark{  
  54.         set { _mac_remark = value; }  
  55.         get { return _mac_remark; }  
  56.     }  
  57.     #endregion Model  
  58. }  

OK,好像代码挺多。哈哈!

整理的比较重忙,有问题的话,希望发现的朋友指出!

页面效果图:

 

 

(share:http://blog.csdn.net/rock870210/category/763690.aspx)

posted @ 2011-04-11 10:04  Kingdom_0  阅读(5007)  评论(1编辑  收藏  举报