先看一下效果图:

界面有待美化,嘿嘿,下面说一下实现过程,当然,我的代码可能不对,就比如后台给前端返回JSON对象,应该包括状态和消息和数据,我这里直接给返回了JSON对象,所以,如果有大神,您知道怎么处理的话,请不吝赐教哦!

前端代码:

这里的子表数据我为了方便直接创建了一个JSON对象,当然也可以从数据库读取数据

 <%@ Page Title="" Language="C#" MasterPageFile="~/DefaultMaster.master" AutoEventWireup="true" CodeFile="sqlTest.aspx.cs" Inherits="Sheets_sqlTest_sqlTest" %>

 <%@ Register Assembly="OThinker.H3.WorkSheet" Namespace="OThinker.H3.WorkSheet" TagPrefix="SheetControls" %>
<asp:Content ID="Content1" ContentPlaceHolderID="cphHead" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cphMain" runat="Server">
<link href="ligerUI/lib/ligerUI/skins/Aqua/css/ligerui-all.css" rel="stylesheet" type="text/css" />
<script src="ligerUI/lib/ligerUI/js/core/base.js" type="text/javascript"></script>
<script src="ligerUI/lib/ligerUI/js/plugins/ligerGrid.js" type="text/javascript"></script>
<style>
.l-grid-detailpanel-inner{
height:auto !important;
}
</style>
<script type="text/javascript">
console.log("js从这里开始运行");
var ajaxurl = 'sqlTest.aspx?Action=GETDATA';
$.post(ajaxurl, function (datas) {
console.log("ajax获取成功");
console.log(JSON.parse(datas));
// //调用ligerGrid
var columns = [
{ display: '主键', name: 'id', type: 'int', minWidth: , width: },
{ display: '名称', name: 'name' },
{ display: '编号', name: 'number' },
{ display: '类型', name: 'type' },
{ display: '单位', name: 'unit' },
{ display: '单价', name: 'price' },
{ display: '数量', name: 'quantity' },
{ display: '备注', name: 'note' }
]; console.log(columns);
//$(function () {
$("#maingrid").ligerGrid({
columns: columns,
data: JSON.parse(datas),
//1,标题:配置title和showTitle:true即可
title: '我的表格', showTitle: true,
//2,宽度:ligerGrid会根据列自动计算出表格的宽度,当然也可以指定一个数值或者百分比来设置宽度
width: '100%',
//3,分页:默认是使用分页的,如果不想使用分页,可以配置 usePager :false
//usePager :false,
//4,滚动条:内容有太多的行时会出现滚动体,如果不想显示,可以通过配置isScroll设置是否出现滚动体
isScroll: true,
showTitle: false, width: '90%', /*columnWidth: 120,*/
detail: { onShowDetail: f_showOrder },
onError: function (a, b) {
} });
//});
//子表数据准备
var jsonObj = {};
jsonObj.Rows = [
{ id: , cpu: "I3", disk: "500G", graphicscard: "2G", memory: "4G" },
{ id: , cpu: "I5", disk: "500G", graphicscard: "2G", memory: "4G" },
{ id: , cpu: "I7", disk: "1T", graphicscard: "4G", memory: "8G" },
{ id: , cpu: "I3", disk: "500G", graphicscard: "2G", memory: "4G" },
{ id: , cpu: "I5", disk: "500G", graphicscard: "2G", memory: "4G" },
{ id: , cpu: "I7", disk: "1T", graphicscard: "4G", memory: "8G" },
];
//子表
function f_showOrder(row, detailPanel, callback) {
var grid = document.createElement('div');
$(detailPanel).append(grid);
$(grid).css('margin', ).ligerGrid({
columns: [
{ display: 'CPU', name: 'cpu' },
{ display: '硬盘', name: 'disk' },
{ display: '显卡', name: 'graphicscard'},
{ display: '内存', name: 'memory' }
], isScroll: false, showToggleColBtn: false, width: '90%',
data: f_getOrdersData(row.id), showTitle: false, columnWidth: ,
onAfterShowData: callback, frozen: false
});
}
//子表数据验证
function f_getOrdersData(id) {
var data = { Rows: [] };
for (var i = ; i < jsonObj.Rows.length; i++) {
if (jsonObj.Rows[i].id == id)
data.Rows.push(jsonObj.Rows[i]);
}
return data;
}
}); </script>
<div style="height: 800px;">
<div id="maingrid"></div>
</div>
</asp:Content>

后台代码:

 using OThinker.H3.Portal;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Sheets_sqlTest_sqlTest : PortalPage
{
protected void Page_Load(object sender, EventArgs e)
{
DoAction();
}
public void DoAction()
{
string actionCode = Request.QueryString["Action"] ?? "";
if (actionCode.ToUpperInvariant()=="GETDATA")
{
object jsonObj = null;
jsonObj = GetSupplies();
if (jsonObj != null)
{
object n= new JavaScriptSerializer().Serialize(jsonObj);
Response.Write(n);
Response.End();
}
} } private object GetSupplies()
{
DataTable dt = new DataTable(); string strsql = "select * from M_supplies ;";
dt = OThinker.H3.WorkSheet.AppUtility.Engine.EngineConfig.CommandFactory.CreateCommand().ExecuteDataTable(string.Format(strsql));
List<Dictionary<string, object>> lists = new List<Dictionary<string, object>>(); foreach (DataRow dr in dt.Rows)
{
Dictionary<string, object> list = new Dictionary<string, object>();
list.Add("id", dr["id"].ToString());
list.Add("name", dr["name"].ToString());
list.Add("number", dr["number"].ToString());
list.Add("type", dr["type"].ToString());
list.Add("unit", dr["unit"].ToString());
list.Add("price", dr["price"].ToString());
list.Add("quantity", dr["quantity"].ToString());
list.Add("note", dr["note"].ToString()); lists.Add(list);
} var gridData = new { Rows = lists };
return gridData;
}
}

BPM使用ligerUI实现主从表显示的更多相关文章

  1. 在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列?

    在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列?(效果图如下:): 在ASPxGridView的主从表显示中,有什么属性可以只让其每次选择只展开一列(效果图) 实现该 ...

  2. 用嵌套List实现DataGrid的主从表显示

    //首先构造嵌套List,也就是一个list在另一个list中充当成员//如:referModels 在res中充当成员var res = totalAffectedMedels.Select(c = ...

  3. DevExpress gridcontrol gridView主从表折叠/展开显示

    在使用报表的时候,有很多需要主从表一起显示,从表不需要另外弹窗显示明细,反而直接显示在主表下方.如图所示: 第一次做这个功能,主从表显示,从表列隐藏,从表单元格点击事件这三个功能点花费了很多时间,在网 ...

  4. cxGrid主从表删除从表记录的困惑

    cxgrid主从表显示方便直观. varADetailDC: TcxGridDataController;AView: TcxCustomGridTableView; with cxgrdbndtbl ...

  5. EF里单个实体的增查改删以及主从表关联数据的各种增删 改查

    本文目录 EF对单个实体的增查改删 增加单个实体 查询单个实体 修改单个实体 删除单个实体 EF里主从表关联数据的各种增删改查 增加(增加从表数据.增加主从表数据) 查询(根据主表找从表数据.根据从表 ...

  6. 代码生成工具Database2Sharp中增加视图的代码生成以及主从表界面生成功能

    在代码生成工具的各种功能规划中,我们一向以客户的需求作为驱动,因此也会根据需要增加一些特殊的功能或者处理.在实际的开发中,虽然我们一般以具体的表进行具体业务开发,但是有些客户提出有时候视图开发也是很常 ...

  7. DevExpress主从表 按组分页一组不足一页为一页--以此记录

    本文的主要是说明Dev的报表的主从表,主从表的每一组显示在一页,当一组超出一页,第二页只显示第一组的. 一.每上报表设置图 简单设计图如上 二.后台代码 报表页代码 public partial cl ...

  8. Winform界面中主从表编辑界面的快速处理

    在Winform开发中,我们往往除了常规的单表信息录入外,有时候设计到多个主从表的数据显示.编辑等界面,单表的信息一般就是控件和对象实体一一对应,然后调用API保存即可,主从表就需要另外特殊处理,本随 ...

  9. 在GridControl表格控件中实现多层级主从表数据的展示

    在一些应用场景中,我们需要实现多层级的数据表格显示,如常规的二级主从表数据展示,甚至也有多个层级展示的需求,那么我们如何通过DevExpress的GridControl控表格件实现这种业务需求呢?本篇 ...

随机推荐

  1. overflow onclick ondblclick 练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. dubbo之本地存根

    本地存根 远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 ...

  3. Canopy聚类算法分析

          原文链接:http://blog.csdn.net/yclzh0522/article/details/6839643 Canopy聚类算法是可以并行运行的算法,数据并行意味着可以多线程进 ...

  4. react基础篇六

    创建 Refs 使用 React.createRef() 创建 refs,通过 ref 属性来获得 React 元素.当构造组件时,refs 通常被赋值给实例的一个属性,这样你可以在组件中任意一处使用 ...

  5. HDU_1969_二分

    Pie Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  6. js开发性能(一)

    随着js技术的发展,性能问题开始被越来越多的人关注,最近了解了一些关于前端性能的问题,这里主要讨论一下在js脚本加载和执行的过程中,我们应该怎么样来提高js的性能. js脚本的处理 初学前端的时候,我 ...

  7. CDR中国元素圆形花纹矢量图制作流程

    在论坛中看到这样一个问题,想要使用CorelDRAW矢量绘图工具做出下图所示的中国元素圆形花纹矢量图,小编潜心研究一下,最终有了绘制方法,今天给大家分享下. 步骤一:画同心圆,先画出10个,这个是根据 ...

  8. 13、Next Item Recommendation with Self-Attention---自注意力+CML

    一.摘要: 自注意力机制------从用户历史交互中推断出项目-项目关系.学习每个项目的相对权重[用来学习用户的暂时兴趣表示] 二. 模型: 一部分是用于建模用户短期意图的自注意力机制,一部分是建模用 ...

  9. LA 3363

    Run Length Encoding(RLE) is a simple form of compression. RLE consists of the process for searching ...

  10. Linux 中,基础命令 command not found...问题

    linux中出现基本命令找不到的问题,经过查找发现是/etc/profile文件出现了问题,解决方案如下: 问题详细: [root@master ~]# ll bash: ls: command no ...