EasyUI笔记(六)数据表格
用asp.net结合easyui做个一个数据网格的页面,包括对数据的增删改查,界面如下:
<body>
<table id="tb1"></table>
<div id="tb" style="padding:5px">
<div style="margin-bottom:5px">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-reload'" onclick="reload()">刷新</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-add'" onclick="Add()">添加</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-edit'" onclick="edit()">修改</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-remove'" onclick="destroy()">删除</a>
</div>
<div>
查询名称:<input type="text" id="Eq" name="Eq" style="width:150px"/>
<select id="order" class="easyui-combobox" style="width:100px">
<option value="asc">升序</option>
<option value="desc">降序</option>
</select>
<a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'" onclick="obj.search()">查询</a>
</div>
</div>
<%-- 弹窗 Start--%>
<div id="dlg" class="easyui-dialog" style="width:400px;height:320px;padding:10px 20px" data-options="closed:true,buttons:'#dlg-buttons'">
<div class="ftitle">设备信息</div>
<form id="fm" method="post" novalidate="novalidate">
<div class="fitem">
<label>产品编号:</label>
<input id="ProductID" name="ProductID" class="easyui-validatebox" data-options="required:false"/>
</div>
<div class="fitem">
<label>产品名称:</label>
<input id="Name" name="Name" class="easyui-validatebox" data-options="required:true"/>
</div>
<div class="fitem">
<label>描述:</label>
<input id="Description" name="Description" class="easyui-validatebox" data-options="required:true"/>
</div>
<div class="fitem">
<label>种类:</label>
<input id="Category" name="Category" class="easyui-validatebox" data-options="required:true"/>
</div>
<div class="fitem">
<label>价格:</label>
<input id="Price" name="Price" class="easyui-validatebox" data-options="required:true,validType:'intOrFloat'"/>
</div>
</form>
</div>
<div id="dlg-buttons">
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" onclick="save()" style="width:90px">Save</a>
<a href="javascript:void(0)" class="easyui-linkbutton" data-options="iconCls:'icon-cancel'" onclick="javascript:$('#dlg').dialog('close')" style="width:90px">Cancel</a>
</div>
<%-- 弹窗 End --%>
</body>
$(function () {
$('#tb1').datagrid({
url: '../Handler/GetDataFormSql.ashx',
width: 1200,
title: '管理',
method: 'get',
toolbar: '#tb',
//rownumbers: true,
singleSelect:true,
columns: [[
{ field: 'ProductID', title: '编号', width: 150 },
{ field: 'Name', title: '名称', width: 150 },
{ field: 'Description', title: '描述', width: 250 },
{ field: 'Category', title: '种类', width: 150 },
{ field: 'Price', title: '价格', width: 150 }
]],
pagination: true,
pageSize: 20,
pageList: [20, 30 , 40]
});
})
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
int page = 1, rows = 10;
//EasyUI自带的两个参数rows与page ,表示当前页与行数
if (context.Request.QueryString["rows"] != null)
{
rows = int.Parse(context.Request.QueryString["rows"].ToString().Trim());
}
if (context.Request.QueryString["page"] != null)
{
page = int.Parse(context.Request.QueryString["page"].ToString().Trim());
}
//查询分页 stratIndex endIndex
int stratIndex, endIndex;
stratIndex = (page - 1) * rows + 1;
endIndex = page * rows;
//查询排序 key order
string key = "", order = "desc";
if (context.Request.QueryString["key"] != null)
{
key = context.Request.QueryString["key"].ToString().Trim();
}
if (context.Request.QueryString["order"] != null)
{
order = context.Request.QueryString["order"].ToString().Trim();
}
//设置模糊查询
StringBuilder sqlWhere = new StringBuilder();
if (key != "") {
sqlWhere.AppendFormat("upper(ProductID) like '%{0}%' or "+
"upper(Name) like '%{0}%' or "+
"upper(Description) like '%{0}%' or " +
"upper(Category) like '%{0}%' or " +
"upper(Price) like '%{0}%'",key);
}
//查询数据库
DAL.SqlHelper sqlhelper = new DAL.SqlHelper();
//获取查询数据的行数
int count = sqlhelper.EUGetRecordCount(sqlWhere.ToString());
//封装数据到dataset
DataSet ds = sqlhelper.GetListByPagebykey(sqlWhere.ToString(), order, stratIndex, endIndex);
//将dataset转化为Json格式
string strToJon = DAL.ToJson.DatasetJson(ds, count);
context.Response.Write(strToJon);
context.Response.End();
}
public int EUGetRecordCount(string key)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("select count(1) FROM Products ");
if (key.Trim() != "")
{
strSql.Append("where " + key);
}
object obj = DBHelper.GetSingle(strSql.ToString());
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
public DataSet GetListByPagebykey(string Key, string order, int startIndex, int endIndex)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("SELECT * FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER (");
if (!string.IsNullOrEmpty(Key.Trim()))
{
strSql.Append("order by T." + Key+" " + order);
}
else
{
strSql.Append("order by T.ProductID asc");
}
strSql.Append(")AS Row, T.* from Products T ");
if (!string.IsNullOrEmpty(Key.Trim()))
{
strSql.Append(" WHERE " + Key);
}
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
return DBHelper.Query(strSql.ToString());
}
public class ToJson
{
/// <summary>
/// DataSet转换成Json格式
/// </summary>
/// <param name="ds">DataSet</param>
/// <returns></returns>
public static string DatasetJson(DataSet ds, int total = -1)
{
StringBuilder json = new StringBuilder();
foreach (DataTable dt in ds.Tables)
{
json.Append("{\"total\":");
if (total == -1)
{
json.Append(dt.Rows.Count);
}
else
{
json.Append(total);
}
json.Append(",\"rows\":");
json.Append(DataTableJson(dt));
json.Append("]}");
} return json.ToString();
}
private static string DataTableJson(DataTable dt)
{
StringBuilder jsonBuilder = new StringBuilder();
jsonBuilder.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
jsonBuilder.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
jsonBuilder.Append("\"");
jsonBuilder.Append(dt.Columns[j].ColumnName);
jsonBuilder.Append("\":\"");
jsonBuilder.Append(dt.Rows[i][j].ToString());
jsonBuilder.Append("\",");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
jsonBuilder.Append("},");
}
jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
return jsonBuilder.ToString();
}
}
public int Add(Products model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into Products(");
strSql.Append("Name,Description,Category,Price)");
strSql.Append(" values (");
strSql.Append("@Name,@Description,@Category,@Price)");
strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@Name", SqlDbType.NVarChar,255),
new SqlParameter("@Description", SqlDbType.NVarChar,255),
new SqlParameter("@Category", SqlDbType.NVarChar,255),
new SqlParameter("@Price ", SqlDbType.Decimal,255),
};
//parameters[0].Value = model.ProductID;
parameters[0].Value = model.Name;
parameters[1].Value = model.Description;
parameters[2].Value = model.Category;
parameters[3].Value = model.Price;
object obj = DBHelper.GetSingle(strSql.ToString(), parameters);
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
EasyUI笔记(六)数据表格的更多相关文章
- 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件
jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...
- 第二百二十四节,jQuery EasyUI,ComboGrid(数据表格下拉框)组件
jQuery EasyUI,ComboGrid(数据表格下拉框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 本节课重点了解 EasyUI 中 ComboGrid(数据表格下拉框)组件的 ...
- jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!)
jQuery EasyUI/TopJUI实现数据表格的增删改查功能(不写js,纯HTML实现!!!) 废话不多说,直接贴上代码 <table id="configEdatagrid&q ...
- Jquery EasyUI datagrid后台数据表格生成及分页详解
由于项目原因,网站后台需要对用户信息进行各种操作,有时还需要进行批量操作,所以首先需要将用户信息展示出来,查了不少资料.发现Jquery EasyUI确实是一个不错的选择,功能强大,文档也比较全面,而 ...
- (五)EasyUI使用——datagrid数据表格
DataGrid以表格形式展示数据,并提供了丰富的选择.排序.分组和编辑数据的功能支持.DataGrid的设计用于缩短开发时间,并且使开发人员不需要具备特定的知识.它是轻量级的且功能丰富.单元格合并. ...
- DataGrid( 数据表格) 组件[9]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- DataGrid( 数据表格) 组件[8]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- DataGrid( 数据表格) 组件[7]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- DataGrid( 数据表格) 组件[6]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- DataGrid( 数据表格) 组件[5]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
随机推荐
- 3、IP地址划分
划分子网方法:1.你所选择的子网掩码将会产生多少个子网?:2 的x 次方(x 代表被借走的主机位数)2.每个子网能有多少主机?: 2 的y 次方-2(y 代表被借走之后剩余的主机位数)3.块大小:bl ...
- 为什么建议使用Guid结构体做为数据库及排序时的主键
在.net2.0中,Guid结构体表示一个全局唯一标识符,是一个在生成时就可以肯定为全世界唯一的16字节值.Guid在数据库中通常可以作为各种排序的主键.比如 public class Company ...
- springmvc中applicationapplicationContext头部代码
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spr ...
- java架构之路-(微服务专题)初步认识微服务与nacos初步搭建
历史演变: 以前我们都是一个war包,包含了很多很多的代码,反正我开始工作的时候做的就是这样的项目,一个金融系统,代码具体多少行记不清楚了,内部功能超多,但是实际能用到的不多,代码冗余超大,每次部署大 ...
- Java并发之Exchanger类
应用场景 如果两个线程在运行过程中需要交换彼此的信息,可以使用Exchanger这个类. Exchanger为线程交换信息提供了非常方便的途径,它可以作为两个线程交换对象的同步点,只有当每个线程都在进 ...
- Rip 动态路由协议
路由信息协议(RIP) 是内部网关协议IGP中最先得到广泛使用的协议. Routing Information Protocol) RIP是一种分布式的基于距离矢量的路由 ...
- C#中HashSet的重复性与判等运算重载
目录 一个故事-- 一个繁荣的遥远国度:泛型容器 但是我也不确定容器里能放些什么东西啊 一个英勇的皇家骑士:HashSet 值类型的HashSet 引用类型的HashSet 另外一个--故--事?? ...
- 曹工说Spring Boot源码(19)-- Spring 带给我们的工具利器,创建代理不用愁(ProxyFactory)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- session和cookie的最深刻理解
先说session 对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上.但还是讲讲,别嫌老~ 有一些人赞成用SESSION,有一些人不赞成.但这个问题到底要怎么说 ...
- Pyinstaller打包exe,丢失图标等问题
Pyinstaller打包exe,丢失图标等问题 一.原因 exe运行时会解压一个名为'_MEI*'的资源文件夹到电脑的临时目录,程序结束时删除. 程序里使用'\图标.png'这样的路径,exe运行时 ...