精华内容
下载资源
问答
  • ASP.NET MVC表格数据的导入导出
    2020-08-09 20:27:18

    ASP.NET MVC 课程:
    MVC项目中表格数据的导入导出操作:
    一:表格(excel)数据导出:利用了浏览器的文件下载功能,一般都是在新页面打开下载的url(例如:window.open()😉。再转到控制器查询出需要导出的数据,由于c#不支持直接进行excel操作,只能由第三方组建:第一种:微软的msoffice excel,缺点:使用者office版本必须与开发者电脑版本一致;一般使用第二种:NPOI(JAVA POI)库中XIS。
    1.项目添加引用NPOI

    2.第一种NPOI导出Excel,思路如下(按需求则取):
    创建工作薄---->创建工作表---->设置表标题(创建行–>创建单元格–>单元格设置值–>合并单元格–>设置单元格样式)---->设置表头(创建一行–>创建单元格,并设置值–>创建表头样式–>单元格设置样式 循环)---->遍历查询到的数据,设置表格数据(创建数据内部部分 单元格样式–>遍历数据,创建数据部分行列)---->设置列宽为自动适应---->把创建好的Excel输出到浏览器

    最后把创建好的Excel输出到浏览器时,记得引入IO;
    代码如下:

    第二种使用模板的方式导出Excel比较简单,思路差不多的,只是表头设置没有上面那种麻烦,比较简单;不过必须得新建一个模板,然后把模板放到项目中去才能使用。
    2.1读取模板: 获取模板的文件路径 Server.MapPat-将相对路径转为绝对路径:如代码:
    string templateFilePath = Server.MapPath("~/Document/ARDataTemplate.xls");;
    2.2 使用NPOI打开模板Excel—>使用文件打开模板文件—>把文件流转为工作薄;
    2.3 打开模板所在第一个工作表;
    2.4 设置标题,如果筛选时间段不为空就拼接上筛选时间段;
    2.5 往模板中填充数据—>设置数据单元格的样式—>开始填充数据—>设置单元格数据、样式
    —>以流的方式返回—>把Excel转化为流,输出;
    注意:1.改模板后另存为时保存类型最好为 Excel 97-2003 工作薄(*.xls)兼容性更好。
    2.导出表时记得先关闭其他正在打开这张表的应用不然会报一下错误:

    二:表格(excel)数据导入
    导入 Excel
    1.下载模板 .xls -->用户根据模板填写数据—>用户上传数据-导入
    获取模板文件的路径—>判断模板是否存在—>获取文件名称—>以流的形式返回文件
    2.在页面获取上传的文件,使用XMLHttpRequest上传文件—>创建FormData对象,将数据添加到FormData—>创建XMLHttpRequest对象,打开指定的URL 文件上传使用POST提交—>发送数据到控制器
    3.判断文件后缀,把文件转成二进制数组,再把二进制数组转为内存流

    4.获取到第一个工作表,并判断表中是否存在行(PhysicalNumberOfRows 是物理行的行数,不包含空行)
    5.将数据保存到DataTable中,把返回的字符串反序列化为json对象
    类如:var msg = JSON.parse(data.currentTarget.responseText);
    6.使用NPOI读取数据,防止有空行时封装一个方法移除掉DataTable中的空行
    注意:先循环完数据再去移除空行
    注意:文件上传只能使用post提交

    更多相关内容
  • jqGrid合并行

    2020-03-05 19:51:38
    jqGrid实现合并行,代码如下: function GetGrid() { var $gridTable = $('#gridTable'); $gridTable.jqGrid({ autowidth: true, // multiselect: true, // rownumbers: true, height: $(window).height() ...

    jqGrid实现合并行,代码如下:

    function GetGrid() {
    	var $gridTable = $('#gridTable');
    	$gridTable.jqGrid({
    		autowidth: true,
            // multiselect: true,
    		// rownumbers: true,
    		height: $(window).height() - 240,
    		datatype: "json",
    		colModel: [
    			{ label: '终端主键', name: 'DocESOPTerminalId', index: 'DocESOPTerminalId', align: 'left', hidden: true },
    			{ label: 'ESOP文件主键', name: 'DocEsopDrawingId', index: 'DocEsopDrawingId', align: 'left', hidden: true },
                { label: '位置名称', name: 'LocationName', index: 'LocationName', width: 150, align: 'left', cellattr: function(rowId) {
                	//合并单元格,为单元格赋id
                	return 'id=\'LocationName' + rowId + "\'";
          		} },
    		    { label: '所属厂区', name: 'FactoryId', index: 'FactoryId', width: 150, align: 'left', cellattr: function(rowId) {
    		    	//合并单元格,为单元格赋id
                    return 'id=\'FactoryId' + rowId + "\'";
    	         } },
    			{ label: '所属车间', name: 'WorkShopId', index: 'WorkShopId', width: 150, align: 'left', cellattr: function(rowId) {
                    //合并单元格,为单元格赋id
                    return 'id=\'WorkShopId' + rowId + "\'";
                } },
    			{ label: '所属产线', name: 'LineId', index: 'LineId', width: 150, align: 'left', cellattr: function(rowId) {
                    //合并单元格,为单元格赋id
                    return 'id=\'LineId' + rowId + "\'";
                } },
                { label: '文件', name: 'DocEsopDrawingCode', index: 'DocEsopDrawingCode', width: 250, align: 'left' }, 
                { label: '属性', name: 'Type', index: 'Type', width: 150, align: 'left' }, 
                { label: '内页切换时长(s)', name: 'ChangeTime', index: 'ChangeTime', width: 160, align: 'left'}, 
                { label: '播放时长(s)', name: 'PlayTime', index: 'PlayTime', width: 160, align: 'left' }, 
    		],
    		viewrecords: true,
    		rowNum: 30,
    		rowList: [30, 50, 100],
    		pager: "#gridPager",
    		sortname: 'ParentModelCode asc,ModelCode asc',
    		shrinkToFit: false,
    		gridview: true,
    		gridComplete: function () {
    			// 在gridComplete调用合并方法
    			Merger("gridTable", 'LocationName');  //"gridTable"是指表格的id
    			Merger("gridTable", 'FactoryId');
    			Merger("gridTable", 'WorkShopId');
    			Merger("gridTable", 'LineId');
    		},
    	});
    }
    
    //单元格行合并方法
    function Merger(gridName, CellName) {
        //得到显示到界面的id集合
        var mya = $("#" + gridName + "").getDataIDs();
        //当前显示多少条
        var length = mya.length;
        //定义合并行数
        var rowSpanTaxCount = 1;
        for (var i = 0; i < length; i += rowSpanTaxCount) {
            //从上到下获取一条信息
            var before = $("#" + gridName + "").jqGrid('getRowData', mya[i]);
            rowSpanTaxCount = 1;
            for (j = i + 1; j <= length; j++) {
                //和上边的信息对比 如果值一样就合并行数+1 然后设置rowspan 让当前单元格隐藏
                var end = $("#" + gridName + "").jqGrid('getRowData', mya[j]);
                if (before[CellName] == end[CellName]) {
                    rowSpanTaxCount++;
                    $("#" + gridName + "").setCell(mya[j], CellName, '', { display: 'none' });
                } else {
                    break;
                }
                $("#" + gridName + "").setCell(mya[i], CellName, '', '', { rowspan: rowSpanTaxCount });
            }
        }
    }
    

    选中第一行
    选中第二行

    //合并行
    function Merger(gridName, CellName) {
        //得到显示到界面的id集合
        var mya = $("#" + gridName + "").getDataIDs();
        //当前显示多少条
        var length = mya.length;
        for (var i = 0; i < length; i++) {
            //从上到下获取一条信息
            var before = $("#" + gridName + "").jqGrid('getRowData', mya[i]);
            for (j = i + 1; j <= length; j++) {
                var end = $("#" + gridName + "").jqGrid('getRowData', mya[j]);
                if (before[CellName] == end[CellName]) {
                    $("#" + gridName + "").setCell(mya[j], CellName, '&nbsp;', '');
                }else{
                    break;
                }
            }
        }
    }
    

    选中第一行
    选中第二行

    展开全文
  • jqgrid合并单元格,合并行、合并列

    千次阅读 2020-04-07 19:56:22
    jqgrid合并行、合并列 先看示例图片最终效果: 注意事项: 这里示例用的jqgrid表格是加载的本地数据 如果用的不是加载本地数据的方法,需要把合并行和列的方法放在gridComplete: function(a, b, c) {...}加载事件...

    jqgrid合并行、合并列

    先看示例图片最终效果:
    在这里插入图片描述

    注意事项:

    这里示例用的jqgrid表格是加载的本地数据
    如果用的不是加载本地数据的方法,需要把合并行和列的方法放在gridComplete: function(a, b, c) {...}加载事件函数里边调用

    需要合并的单元格要在配置项中加上以下代码配置(示例):

    {
      name: 'name',
      align: 'center',
      // 加上这个配置来设置单元格属性 id
      cellattr: function(rowId, tv, rawObject, cm, rdata) {
        return "id='name" + rowId + "'"
      },
    },
    

    代码中还用到了jqgrid的setcell方法:
    这里引用一下jqgrid文档中的说明,附 jqgrid文档地址

    方法名参数返回值说明
    setCellrowid,colname, data, class, propertiesjqGrid对象改变单元格的值。rowid:当前行id;colname:列名称,也可以是列的位置索引,从0开始;data:改变单元格的内容,如果为空则不更 新;class:如果是string则会使用addClass方法将其加入到单元格的css中,如果是array则会直接加到style属性中;properties:设置单元格属性

    HTML代码:

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>jqgrid合并单元格</title>
        <link rel="stylesheet" href="./jqgrid/css/ui.jqgrid.css">
        <link rel="stylesheet" href="./jqgrid/css/css/redmond/jquery-ui-1.8.16.custom.css">
       
        <style>
          .jqgrid {
            width: 80%;
            margin: 0 auto;
          }
          /* 这个代码是解决表头有一点点错位的问题 */
          .ui-state-default,
          .ui-widget-content .ui-state-default,
          .ui-widget-header .ui-state-default {
            border: 2px solid #e2e2e2;
          }
        </style>
      </head>
    
      <body>
        <div class="jqgrid">
          <table id="gridTable"></table>
          <div id="gridTablePager"></div>
        </div>
    
        <script src="./js/jquery-1.9.1.min.js"></script>
        <script src="./jqgrid/js/jquery.jqGrid.src.js"></script>
        <script src="./jqgrid/js/i18n/grid.locale-cn.js"></script>
      </body>
    </html>
    

    模拟的json数据:

    var jsonData = [
      {
        id: 'F70741C4EA5932',
        name: 'HTML',
        book: '《精通HTML》',
        author: '(英)波恩(Hanine,P.)',
        tops: '12',
      },
      {
        id: '14CFF86267835A3',
        name: 'HTML',
        book: '《深入浅出html》',
        author: 'Elisabeth Freeman',
        tops: '13',
      },
      {
        id: '10F996AC54BA25A',
        name: 'HTML',
        book: '《HTML5程序设计(第2版)》',
        author: '[荷] Peter Lubbers / [美] Brian Albers / [美] Frank Salim',
        tops: '14',
      },
      {
        id: '8A5935CE5F99A',
        name: 'CSS',
        zytz: 0,
        book: '《CSS权威指南》',
        author: '美 Eric A.Meyer',
        tops: '11',
      },
      {
        id: '8a82FF86267835A3D55D74',
        name: 'CSS',
        book: '《CSS世界》',
        author: '张鑫旭',
        tops: '10',
      },
      {
        id: '592B3B34DB6A25A',
        name: 'CSS',
        zytz: 0,
        book: '《CSS设计指南》',
        author: 'Charles Wyke-Smit',
        tops: '9',
      },
      {
        id: '8a829cF99A',
        name: 'JavaScript',
        book: '《JS高级程序设计》',
        author: '(美)(Nicholas C.Zakas)扎卡斯',
        tops: '8',
      },
      {
        id: 'D7468CAE66F4D',
        name: 'JavaScript',
        book: '《JS权威指南》',
        author: '(美)弗拉纳根',
        tops: '7',
      },
      {
        id: '66F4D01B59',
        name: 'JavaScript',
        book: '《JavaScript DOM编程艺术》',
        author: '(英)(Jeremy Keith)',
        tops: '6',
      },
    ]
    

    JS代码:

    // jqgrid表格配置
    $('#gridTable').jqGrid({
      datatype: 'local',
      autowidth: true,
      autoheight: true,
      rowNum: 1000000,
      altRows: true,
      rownumbers: true, // 显示序列号
      rownumWidth: 50, // 序号列宽
      pager: '#gridTablePager',
      colNames: ['ID', '类别', '书籍', '作者', 'm'],
      colModel: [
        {
          name: 'id',
          hidden: true,
        },
        {
          name: 'name',
          align: 'center',
          sortable: false,
          // 设置单元格属性
          cellattr: function(rowId, tv, rawObject, cm, rdata) {
            return "id='name" + rowId + "'"
          },
        },
        {
          name: 'book',
          align: 'center',
          sortable: false,
          // 设置单元格属性
          cellattr: function(rowId, tv, rawObject, cm, rdata) {
            return "id='book" + rowId + "'"
          },
        },
        {
          name: 'author',
          align: 'center',
          sortable: false,
          // 设置单元格属性
          cellattr: function(rowId, tv, rawObject, cm, rdata) {
            return "id='author" + rowId + "'"
          },
        },
        {
          name: 'tops',
          align: 'center',
          sortable: false,
        },
      ],
      gridComplete: function(a, b, c) {
        // 设置序号
        $('#gridTable').jqGrid('setLabel', 'rn', '序号', {
          'text-align': 'center',
          'vertical-align': 'middle',
          width: '50',
        })
      },
      loadComplete: function(a, b, c) {},
    })
    
    /* 加载本地数据 */
    var localData = {}
    var reader = {
      root: function(obj) {
        return localData.rows
      },
      page: function(obj) {
        return localData.page
      },
      total: function(obj) {
        return localData.total
      },
      records: function(obj) {
        return localData.records
      },
      repeatitems: false,
    }
    localData = {
      page: 1, // 当前几页
      total: 0, // 页码总数
      records: '0', // 数据行总数
      rows: jsonData,
    }
    localData.rows = jsonData
    localData.records = jsonData.length
    localData.total = jsonData.length % 5 == 0 ? jsonData.length / 5 : Math.floor(jsonData.length / 5) + 1
    $('#gridTable')
      .setGridParam({
        data: localData.rows,
        reader: reader,
        gridComplete: function(a, b, c) {
          // 调用合并行的方法
          MergeGridRows('gridTable', 'name')
    
          // 调用合并列的方法
          MergeTableColumn('gridTable', 'book', 2, 2)
    
          /**
           * 这里调用方法时传入的最后两个参数分别都大于了最大行数和最大列数
           * 后边的代码中有提供相应的解决方案
           */
          MergeTableColumn('gridTable', 'author', 10, 4)
        },
      })
      .trigger('reloadGrid')
    
    /**
     * @MethodAuthor:  Yao
     * @MethodDescription: jqgrid合并行
     * @param {String} gridName jqgrid表格元素的id
     * @param {String} CellName 需要合并的列字段名
     * @return {*} *
     */
    function MergeGridRows(gridName, cellName) {
      // 获取所有行
      var rows = $('#' + gridName + '').getDataIDs()
      //当前显示多少条
      var length = rows.length
      for (var i = 0; i < length; i++) {
        //从上到下获取一条信息
        var before = $('#' + gridName + '').jqGrid('getRowData', rows[i])
        var rowSpanTaxCount = 1
        for (j = i + 1; j <= length; j++) {
          //和上边的信息对比 如果值一样就合并行数+1 然后设置rowspan 让当前单元格隐藏
          var end = $('#' + gridName + '').jqGrid('getRowData', rows[j])
          if (before[cellName] == end[cellName]) {
            rowSpanTaxCount++
            // 设置单元格隐藏
            $('#' + gridName + '').setCell(rows[j], cellName, '', {
              display: 'none',
            })
          } else {
            rowSpanTaxCount = 1
            break
          }
          // 设置单元格的rowspan
          // 这里的需要用上层for循环的索引 i
          $('#' + gridName + '').setCell(
            rows[i],
            cellName,
            '',
            { color: 'red' },
            {
              rowspan: rowSpanTaxCount,
            }
          )
        }
      }
    }
    
    /**
     * @MethodAuthor:  Yao
     * @MethodDescription: 合并列
     * @param {*} gridName jqgrid表格元素的id
     * @param {*} CellName 从哪一列开始
     * @param {*} startRowIndex 从哪一行开始
     * @param {*} num 合并几个
     * @return {*} *
     */
    function MergeTableColumn(gridName, cellName, startRowIndex, num) {
      // 获取所有行
      var rows = $('#' + gridName + '').getDataIDs()
    
      // 判断传入的行数索引是否大于最大行数,如果大于默认为最后一行
      if (startRowIndex >= rows.length) {
        startRowIndex = rows.length - 1
      }
    
      // 获取合并单元格的开始行
      var currentRows = rows[startRowIndex]
    
      // 由于jqgrid渲染表格时会在tbody中自动生成一个隐藏的tr在第一行,所以这里获取元素的时候需要加 1
      var currentTr = $('#' + gridName + '')
        .find('tr')
        .eq(startRowIndex + 1)
    
      // 获取 开始列 相对于父元素tr中的索引位置  这里不需要加 1 因为是直接根据id来选择的
      var currentTdIndex = $('td[id=' + cellName + currentRows + ']').index()
    
      // 判断传入的合并数值是否超出单元格的个数,如果超出的话设置为最大合并数
      if (currentTdIndex + num >= currentTr.find('td').length) {
        num = currentTr.find('td').length - currentTdIndex
      }
    
      // 初始化colspan的值
      var mergeNum = 1
    
      for (var i = 0, len = rows.length; i < len; i++) {
        // 当索引大于开始列的索引时开始计算需要合并的colspan的值
        if (i > currentTdIndex) {
          // 当索引大于等于 (currentTdIndex + num) 的值说明已经达到了合并列的限制数 则跳出循环
          if (i >= currentTdIndex + num) {
            break
          }
          mergeNum++
          $('#' + gridName + '').setCell(currentRows, cellName, '', { color: 'red' }, { colspan: mergeNum })
          $('#' + gridName + '').setCell(currentRows, i + 1, '', { display: 'none' })
        }
      }
    }
    
    展开全文
  • 之前有朋友在他公司要用到JQ的插件JQGRID合并asp.net,但是他遇到问题,载入不了数据,于是我在网上到处找没找到一个可以用的asp.net例子,于是参考了几个PHP和几个JAVA的实现,给大家简单的介绍下如何在asp.net里使用这...

    之前有朋友在他公司要用到JQ的插件JQGRID合并asp.net,但是他遇到问题,载入不了数据,于是我在网上到处找没找到一个可以用的asp.net例子,于是参考了几个PHP和几个JAVA的实现,给大家简单的介绍下如何在asp.net里使用这个插件:

    因为我不会PHP,官方的demo其实介绍的还是比较详细的.

    http://www.trirand.com/blog/jqgrid/jqgrid.html

     

    所以PHP高手们可以不要看这篇文章了.

          参考了很多文章和JAVA的应用,找到零星的asp.net的例子,要么就是用不了,要么就是非常复杂,让人不知道从哪里下手,的确,走了很多弯路了,实在是麻烦,都想放弃这个插件了,不过还是努力坚持,决定了一旦例子成功就要贴上来给大家,方便别人就是方便自己.废话不多说了,下面正式开始介绍:

     

    因为一个完整的项目全部拿来解释,还是过于繁琐了,所以就拆出其中的部分,其中不清楚的类会稍作解释,大家不明白的地方可以留言,总共就是三个文件:

    Default.aspx (前端文件)

    Handler.ashx (处理文件)

    SQLComment.cs(操作SQL里comment表的类)

     

    这里的主要目的还是为了能够实现数据导入进JQGRID,更复杂的操作今后会谈到.

     

          1.客户端的准备

          因为JQGrid是基于JQuery的,所以当然要引用到JQ啦.

    
       
    < script type ="text/javascript" src ="../scripts/jQuery/jquery-1.4.2.min.js" ></ script >

    JQGRID现在已经完美的和JQ的另一个界面插件JQUI合并了,所以可以用更丰富的界面.下面是引入JQUI:

     

    
       
    < script type ="text/javascript" src ="../scripts/jQuery/plugins/jquery-ui-1.8.4.custom.min.js" ></ script >

    当然,最重要的是一定要引入JQGRID的文件咯,呵呵,但是这里要注意到的是,你去jqgrid的官网里下载的时候,里面还会有一个本地化的扩展包,当然我选中文的,而且一定要让这个js包在JQGRID的前面,这是官网提到的:

     

    
       
    < script type ="text/javascript" src ="../scripts/jQuery/plugins/grid.locale-cn.js" ></ script >
    < script type ="text/javascript" src ="../scripts/jQuery/plugins/jquery.jqGrid.min.js" ></ script >

     

    还有UI和JQGRID的css文件也要导入:

     

    
       
    < link rel ="stylesheet" type ="text/css" media ="screen" href ="../themes/redmond/jquery-ui-1.8.4.custom.css" />
    < link rel ="stylesheet" type ="text/css" media ="screen" href ="../themes/ui.jqgrid.css" />

     

     

    完整的导入图如下:

    1

     

          2.客户端的配置

          客户端的配置很重要,不仅是post到接下来的handler.ashx里面,还是从handler.ashx里get到的数据,都是很重要的.

    http://blog.csdn.net/gengv/archive/2010/07/05/5714834.aspx

    大家可以参考一下 耿炜 大师的博客里也有介绍到JQGRID的配置参数,不详细介绍了,我主要是快速能调通为主.嘻嘻~偷懒ing~这里的东西很重要哦~官网的维基帮助是E文的,这里是全中文的!

    代码
    复制代码
    
        
    < script type ="text/javascript" >
    $(document).ready(
    function () {
    jQuery(
    " #list " ).jqGrid({
    url:
    ' asynchronous/GridData.ashx?p=Comment ' ,
    datatype:
    " json " ,
    height:
    ' auto ' ,
    colNames: [
    ' 评论ID ' , ' 类别ID ' , ' 文章ID ' , ' 留言人 ' , ' 留言内容 ' , ' 发布日期 ' , ' 留言IP ' ],
    colModel: [
    { name:
    ' CommentID ' , index: ' CommentID ' , sorttype: " int " , width: 60 },
    { name:
    ' TypeID ' , index: ' TypeID ' , sorttype: " int " , width: 60 },
    { name:
    ' FromID ' , index: ' FromID ' , sorttype: " int " , width: 60 },
    { name:
    ' Name ' , index: ' Name ' , editable: true , width: 60 },
    { name:
    ' Contents ' , index: ' Contents ' , sortable: false , width: 300 },
    { name:
    ' PublishDate ' , index: ' PublishDate ' , sorttype: " date " , width: 190 },
    { name:
    ' IP ' , index: ' IP ' , align: " right " , sorttype: " float " , editable: true , width: 130 }
    ],
    viewrecords:
    true ,
    rowNum:
    10 ,
    rowList: [
    10 , 20 , 30 ],
    sortname:
    ' CommentID ' ,
    jsonReader: {
    root:
    " griddata " ,
    total:
    " totalpages " ,
    page:
    " currpage " ,
    records:
    " totalrecords " ,
    repeatitems:
    false
    },
    pager:
    " #pager " ,
    caption:
    " 评论管理 " ,
    sortorder:
    " desc " ,
    hidegrid:
    false
    });
    jQuery(
    " #list " ).jqGrid( ' navGrid ' , ' #pager ' , { edit: false , add: false , del: false });
    });
    </ script >
    复制代码

     

    小小说明一下,这里的配置必须是数据库里的字段,我临时做了一个小小的数据库,里面有这么一个tb_comment表,仔细观察可以看出,是数据库的字段配置到了前台.

    每次访问其实都带有很多参数:

    http://localhost:1110/WebSite/admin/asynchronous/GridData.ashx?p=Comment&_search=false&nd=1282224345798&rows=10&page=1&sidx=CommentID&sord=desc

    然后JSONREADER是读取JSON的方式,告诉大家,成功的JSON应该是这个样子的:

    代码
    复制代码
    
        
    {"totalpages":"5","currpage":"1","totalrecords":"41","griddata":[{"CommentID":10041,"TypeID":10009,"FromID":10018,"Name":"木头","Contents":"恭喜啊~","PublishDate":"2010-08-15 10:42:54 507000","IP":"127.0.0.1"},{"CommentID":10040,"TypeID":10009,"FromID":10018,"Name":"我","Contents":"我","PublishDate":"2010-07-27 10:55:06 390000","IP":"127.0.0.1"},{"CommentID":10039,"TypeID":10009,"FromID":10014,"Name":"我","Contents":"我","PublishDate":"2010-04-18 11:25:21 640000","IP":"127.0.0.1"},{"CommentID":10038,"TypeID":10009,"FromID":10016,"Name":"w","Contents":"w","PublishDate":"2010-04-18 11:24:37 070000","IP":"127.0.0.1"},{"CommentID":10037,"TypeID":10009,"FromID":10018,"Name":"as","Contents":"test","PublishDate":"2010-04-18 10:57:19 517000","IP":"127.0.0.1"},{"CommentID":10036,"TypeID":10009,"FromID":10000,"Name":"小东","Contents":"恭喜啊...","PublishDate":"2010-04-16 08:41:19 633000","IP":"127.0.0.1"},{"CommentID":10035,"TypeID":10009,"FromID":10000,"Name":"发","Contents":"34的多5的 ","PublishDate":"2010-04-16 08:37:57 080000","IP":"127.0.0.1"},{"CommentID":10034,"TypeID":10009,"FromID":10000,"Name":"345","Contents":"345","PublishDate":"2010-04-16 08:31:40 893000","IP":"127.0.0.1"},{"CommentID":10033,"TypeID":10009,"FromID":10000,"Name":"123","Contents":"13","PublishDate":"2010-04-16 08:31:01 003000","IP":"127.0.0.1"},{"CommentID":10032,"TypeID":10009,"FromID":10000,"Name":"这些是","Contents":"这些 是","PublishDate":"2010-04-16 08:27:37 723000","IP":"127.0.0.1"}]}
    复制代码
    文章出处: http://www.cnblogs.com/bant/archive/2010/08/20/1804103.html

    转载于:https://www.cnblogs.com/4kapple/archive/2012/07/27/2611680.html

    展开全文
  • jqGrid的使用总结

    2019-03-13 14:58:11
    jqGrid是一个基于Jquey的表格控件,jqGrid以.ajax的方法实现服务器后台通信,因此利用jqGrid可以快速实现从服务器后台获取数据并在前端展示出来。 如何使用 jqGrid Demo在线文档简单粗暴,上面可以看到每个参数、...
  • jQuery是一个重要的客户端框架,ASP.NET MVC默认的项目模板中就带了这个框架。掌握这个框架对于更好地编写ASP.NET MVC应用是非常重要的。事实上,网上有很多文章讲述如何在ASP.NET MVC...Using jqGrid with ASP.NET ...
  • 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码] 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行...
  • 速度比较快的Asp.net Grid。它的卓越表示在于:百万级别数据记录加载只用1秒 这个控件能够将正常的HTML Table转成可排序,固定表头的Table。 jExpand是一个可以让表格具备可伸缩功能的jQuery插件。利用这个功能可以...
  • CSDN 统一标签设计 征求反馈

    万次阅读 多人点赞 2021-03-26 16:58:34
    macos, android, electron, Xamarin, 微软开发 (包括了 .Net 和其他微软平台的技术) .netcore, asp.net, c#, typescript, linq, hololens, mssql, azure, WPF,MFC 测试 单元测试,集成测试,测试覆盖率,模块...
  • HTML网页Table解析

    2021-07-10 05:30:16
    由于客服的web系统用ASP.Net的__doPostBa ... 20170717_python_爬虫_网页数据解析_BeautifulSoup_数据保存_pymysql 上午废了老大劲成功登陆后,下午看了下BeautifulSoup和pymysql,晚上记录一下 自己电脑装的sublime,...
  • 想学习js的朋友可以看看 sql 修改表的所有者 几个ASP.NET技巧 基于NBear的Domain层设计 Asp.Net类库中发送电子邮件的代码 js中slice()方法的使用说明 带你全面了解Linux系统内存监控 SQL学习笔记八 索引,表连接,子...
  • C语言--乱写C语言

    2021-05-24 07:02:59
    Asp.Net时间方法大全 DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(- Convert.ToInt32(dt.DayOfWeek.To ... 关于css定位 关于定位要弄清一个概念,那就是"文档流" 什到是文档流 说得...
  • Jqgrid框架用于数据展示的纯前端开发 除了查询之外的所有操作。包含 分页,分组,以及模糊查询,汇总等等。这算是上个星期的战绩了。 鉴于我对前端一点都不了解也不会用,用一个星期摸索了一下。先提供两个网页。 一...
  • 10. obout v3 Grid for ASP.NET 速度比较快的Asp.net Grid。它的卓越表示在于:百万级别数据记录加载只用1秒 11. Table widget (演示地址) 这个控件能够将正常的HTML Table转成可排序,固定表头的Table。 12. ...
  • javaScript开源大全

    千次阅读 2019-09-27 21:37:20
    javascript开源大全 转自:http://www.cnblogs.com/yiliweichinasoft/p/3819699.html javascript开源大全 Ajax框架-jQuery 可视化HTML编辑器-CKEditor 国产jQuery-UI框架-(jUI)-DWZ ...服...
  • 33.ASP.NET中使用jQGrid 34.EntityName 出错时的解决办法 35.Asp.Net实现评论盖楼(含Ajax实现方式) 36.ASP.NET GBK读取QueryString 37.C#匹配HTML中的图片地址 38.搜索引擎优化排名因素小结 39.根据日期获得当天是...
  • Dojo、ExtJS、Jquery(EasyUI、jQgrid、ligerui、DWZ)、还有asp.net中的服务器控件、当然也少不了HTML 标签之table标签了。其中dojo、ExtJS、Jquery这三者应该算是并列关系吧,都是基于JavaScript的框架、只不过...
  • DT-grid学习笔记

    千次阅读 2016-07-06 09:35:12
    DESTINY Grid(DT Grid)是一款由 大连首闻科技有限公司 自主研发的基于 MIT开源协议 的响应...由于工作需要,之前用的是jqgrid,我看网上还有datagrid等,但我现在还不太懂这几个有什么区别? 这是查看的一些表格插件
  • 企业应用框架基础模块

    千次阅读 2014-03-01 20:11:47
    企业应用系统开发的越多,就会发现...我从后端到前端总结了一些基础模块,主要是基于Asp.Net 的Web解决方案。供大家在实现此类框架时做参考。 一. 后端 1. 基础组件 1) 持久层  SqlHelper , Enterprise Library, O/R
  • javascript开源大全

    千次阅读 2015-05-04 08:46:24
    javascript开源大全 Ajax框架-jQuery 可视化HTML编辑器-CKEditor 国产jQuery-UI框架-(jUI)-DWZ 网页开发FireFox插件-Firebug 服务器端的JavaScript脚本-Node.js ...跨浏览
  • 7款强大的Javascript网格插件推荐

    千次阅读 2013-05-30 11:15:31
    它具有的功能包括:可以调整列宽,合并列标题,分页,排序,显示/隐藏表格等。Flexigrid显示的数据能够通过Ajax获取或者从一个普通的表格转换。 EditableGrid EditableGrid是一个JavaScript Library,利用...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

asp.net jqgrid 合并行