QGrid系列教程--查询数据、编辑数据、删除数据

查询数据

在ProcessRequest 函数下修改:

public void ProcessRequest(HttpContext context)

{

//查找

if (context.Request.Params.Get("_search") == "true")

{

return;

}

NameValueCollection forms = context.Request.Form;

string strOperation = forms.Get("oper");

string strResponse = string.Empty;

if (strOperation == null)

{

//排序

if (context.Request.Params.Get("sidx") != null &&

!string.IsNullOrEmpty(context.Request.Params.Get("sidx").ToString()) &&

context.Request.Params.Get("sord") != null &&

!string.IsNullOrEmpty(context.Request.Params.Get("sord").ToString()))

{

return;

}

strResponse = GetJson(GetUserDT()); //load data

}

context.Response.Write(strResponse);

}

private DataTable GetUserDT()

{

string cmdText = "SELECT UserId, UserCode, Password FROM T_User";

SQLHelper sqlhelper = new SQLHelper();

DataTable dt = sqlhelper.Selectinfo(cmdText);

return dt;

}

private string GetJson(DataTable dt)

{

JavaScriptSerializer serializer = new JavaScriptSerializer();

List<Dictionary<string, object>> rows = new List<Dictionary<string,

object>>();

Dictionary<string, object> row = null;

foreach (DataRow dr in dt.Rows)

{

row = new Dictionary<string, object>();

foreach (DataColumn col in dt.Columns)

{

string s = dr[col].ToString(); //特殊情况

if (col.ColumnName == "IsAdmin")

{

s = s == "1" ? "是" : "否";

}

if (col.ColumnName == "HasWrite")

{

s = s == "1" ? "是" : "否";

}

row.Add(col.ColumnName.Trim(), s);

}

rows.Add(row);

}

return serializer.Serialize(rows);

}

稍加留意便可发现context.Request.Params里存有大量的参数,比如第一次加载时如下所示:

{_search=false&nd=1410940615486&rows=10&page=1&sidx=&sord=asc&CNZZDATA155540=cnzz_eid%2

53D900936271-1409219704-%2526ntime%253D1409219704&ALL_HTTP=HTTP_CONNECTION%3akeepalive%

0d%0aHTTP_ACCEPT%3aapplication%2fjson%2c+text%2fjavascript%2c+*%2f*%3b+q%3d0.01%0d%0aH

TTP_ACCEPT_ENCODING%3agzip%2cdeflate%2csdch%0d%0aHTTP_ACCEPT_LANGUAGE%3azh-

CN%2czh%3bq%3d0.8%2czh-

TW%3bq%3d0.6%0d%0aHTTP_COOKIE%3aCNZZDATA155540%3dcnzz_eid%253D900936271-1409219704-

%2526ntime%253D1409219704%0d%0aHTTP_HOST%3alocalhost%3a12590%0d%0aHTTP_REFERER%3ahttp%3a%2f%

2flocalhost%3a12590%2fJQGrid2.aspx%0d%0aHTTP_USER_AGENT%3aMozilla%2f5.0+(Windows+NT+6.1)+App

leWebKit%2f537.36+(KHTML%2c+like+Gecko)+Chrome%2f37.0.2062.120+Safari%2f537.36%0d%0aHTTP_X_R

EQUESTED_WITH%3aXMLHttpRequest%0d%0a&ALL_RAW=Connection%3a+keepalive%

0d%0aAccept%3a+application%2fjson%2c+text%2fjavascript%2c+*%2f*%3b+q%3d0.01%0d%0aAccep

t-Encoding%3a+gzip%2cdeflate%2csdch%0d%0aAccept-Language%3a+zh-CN%2czh%3bq%3d0.8%2czh-

TW%3bq%3d0.6%0d%0aCookie%3a+CNZZDATA155540%3dcnzz_eid%253D900936271-1409219704-

%2526ntime%253D1409219704%0d%0aHost%3a+localhost%3a12590%0d%0aReferer%3a+http%3a%2f%2flocalh

ost%3a12590%2fJQGrid2.aspx%0d%0aUser-

Agent%3a+Mozilla%2f5.0+(Windows+NT+6.1)+AppleWebKit%2f537.36+(KHTML%2c+like+Gecko)+Chrome%2f

37.0.2062.120+Safari%2f537.36%0d%0aX-Requested-

With%3a+XMLHttpRequest%0d%0a&APPL_MD_PATH=%2fLM%2fW3SVC%2f17%2fROOT&APPL_PHYSICAL_PATH=c%3a%

5cusers%5cjhl%5cdocuments%5cvisual+studio+2013%5cProjects%5cJqGrid%5cJqGrid%5c&AUTH_TYPE=&AU

TH_USER=&AUTH_PASSWORD=&LOGON_USER=&REMOTE_USER=&CERT_COOKIE=&CERT_FLAGS=&CERT_ISSUER=&CERT_

KEYSIZE=&CERT_SECRETKEYSIZE=&CERT_SERIALNUMBER=&CERT_SERVER_ISSUER=&CERT_SERVER_SUBJECT=&CER

T_SUBJECT=&CONTENT_LENGTH=0&CONTENT_TYPE=&GATEWAY_INTERFACE=CGI%2f1.1&HTTPS=off&HTTPS_KEYSIZE=&HTTPS_SECRETKEYSIZE=&HTTPS_SERVER_ISSUER=&HTTPS_SERVER_SUBJECT=&INSTANCE_ID=17&INSTANCE_M

ETA_PATH=%2fLM%2fW3SVC%2f17&LOCAL_ADDR=%3a%3a1&PATH_INFO=%2fWebService%2fUserHandler.ashx&PA

TH_TRANSLATED=c%3a%5cusers%5cjhl%5cdocuments%5cvisual+studio+2013%5cProjects%5cJqGrid%5cJqGr

id%5cWebService%5cUserHandler.ashx&QUERY_STRING=_search%3dfalse%26nd%3d1410940615486%26rows%

3d10%26page%3d1%26sidx%3d%26sord%3dasc&REMOTE_ADDR=%3a%3a1&REMOTE_HOST=%3a%3a1&REMOTE_PORT=1

1798&REQUEST_METHOD=GET&SCRIPT_NAME=%2fWebService%2fUserHandler.ashx&SERVER_NAME=localhost&S

ERVER_PORT=12590&SERVER_PORT_SECURE=0&SERVER_PROTOCOL=HTTP%2f1.1&SERVER_SOFTWARE=Microsoft-

IIS%2f8.0&URL=%2fWebService%2fUserHandler.ashx&HTTP_CONNECTION=keepalive&

HTTP_ACCEPT=application%2fjson%2c+text%2fjavascript%2c+*%2f*%3b+q%3d0.01&HTTP_ACCEPT_E

NCODING=gzip%2cdeflate%2csdch&HTTP_ACCEPT_LANGUAGE=zh-CN%2czh%3bq%3d0.8%2czh-

TW%3bq%3d0.6&HTTP_COOKIE=CNZZDATA155540%3dcnzz_eid%253D900936271-1409219704-

%2526ntime%253D1409219704&HTTP_HOST=localhost%3a12590&HTTP_REFERER=http%3a%2f%2flocalhost%3a

12590%2fJQGrid2.aspx&HTTP_USER_AGENT=Mozilla%2f5.0+(Windows+NT+6.1)+AppleWebKit%2f537.36+(KH

TML%2c+like+Gecko)+Chrome%2f37.0.2062.120+Safari%2f537.36&HTTP_X_REQUESTED_WITH=XMLHttpReque

st} System.Collections.Specialized.NameValueCollection {System.Web.HttpValueCollection}

搜索时_search=true

增删改时有参数oper。第一次加载时可以看出这个参数为null。此时就要加载数据了。查询出一个

datatable序列化后返回就好了,前端自会处理。

增加时oper=add

修改时oper=edit

删除时oper=del

数据加载完成后有个事件loadComplete,在这里可以进行一些操作比如遍历表格修改一些显示。

比如下面这个例子,遍历所有行,把每行的UserCode修改为行号:

loadComplete: function (xhr) {

var users = $(grid_selector).jqGrid(‘getDataIDs‘);

if (users) {

for (var i = 0, j = users.length; i < j; i++) {

ParkId = $(grid_selector).jqGrid(‘getCell‘, users[i],

‘UserCode‘);

$(grid_selector).jqGrid(‘setRowData‘, users[i], {‘UserCode‘:

i});

}

}

},

编辑数据

需要在colNames里新增一列为第一列,值自定义或为空即可,colNames: [‘ ‘, ‘Id‘, ‘用户名‘,

‘密码‘],对应的,colModel里需要增加这些内容:

{

name: ‘myac‘, index: ‘‘, width: 80, fixed: true, sortable:

false, resize: false,

formatter: ‘actions‘,

formatoptions: {

keys: true,

//editbutton: true,

editformbutton: true,

// extraparam: { oper: ‘edit‘ },

editOptions: { //编辑操作,这个很重要,实现编辑时传送参数

什么的。

reloadAfterSubmit: true,

//editData: {

// editkey: function () {

// var sel_id =

$(grid_selector).jqGrid(‘getGridParam‘, ‘selrow‘);

// var value = $(grid_selector).jqGrid(‘getCell‘,

sel_id, ‘UserId‘);

// return value;

// }

//},

closeAfterEdit: true,

afterSubmit: function (response, postdata) {

if (response.responseText != "") {

alert(response.responseText);

$(this).jqGrid(‘setGridParam‘, { datatype:

‘json‘ }).trigger(‘reloadGrid‘);

return [true, response.responseText]

}

},

},

delOptions: { //删除操作,这个很重要,实现删除时传送参数什

么的。 这处网上没有例子的。

reloadAfterSubmit: true,

delData: {

delId: function () {

var sel_id =

$(grid_selector).jqGrid(‘getGridParam‘, ‘selrow‘);

var value = $(grid_selector).jqGrid(‘getCell‘,

sel_id, ‘UserId‘);

return value;

}

},

afterSubmit: function (response, postdata) {

if (response.responseText != "") {

alert(response.responseText);

$(this).jqGrid(‘setGridParam‘, { datatype:

‘json‘ }).trigger(‘reloadGrid‘);

return [true, response.responseText]

}

}

},

}

},

Formatoptions下有delbutton和editbutton,可以设置为true或false。默认为true。一般不要管就

好了。

Width只能为数字不能为百分比,grid会根据全部列自己计算比例。

Fixed表示不会随下面的滚动轴一起滚动。

Sortable表示能否排序。

Editformbutton表示是在弹出窗口中编辑还是行编辑。

editOptions和delOptions为设置编辑或删除时的一些参数。reloadAfterSubmit为操作完成后是否

重新加载表格数据,一般数据变动后必须重新加载一次的:

$(this).jqGrid(‘setGridParam‘, { datatype: ‘json‘ }).trigger(‘reloadGrid‘);

closeAfterEdit为弹出窗体编辑时,提交后是否关闭编辑框。

editData和delData很重要,这里可以向http handler传递一些参数,比如获取行id传给处理函数:

var sel_id = $(grid_selector).jqGrid(‘getGridParam‘, ‘selrow‘);

var value = $(grid_selector).jqGrid(‘getCell‘, sel_id, ‘UserId‘);

以上两行代码实现的是获取选择行的‘UserId‘。

多个选择需要遍历:

var sel_id = [];

sel_id = $(grid_selector).jqGrid(‘getGridParam‘,

‘selarrrow‘);

var value = ‘‘;

for (var i = 0; i < sel_id.length; i++) {

value = value + ‘,‘ + $(grid_selector).jqGrid(‘getCell‘,

sel_id[i], ‘ParkId‘);

}

if (value.charAt(0) == ‘,‘) {

value = value.substr(1);

}

http handler处理程序:

if (strOperation == "edit")

{

user.UserId = int.Parse(forms.Get("UserId").ToString());

if (CheckUserExist(user.UserCode, user.UserId.ToString()))

{

strResponse = "用户名重复,请确认!";

}

else

{

strResponse = UpdateUser(user) ? "用户更新成功!" : "用户更新失败,

请确认!";

}

context.Response.Write(strResponse);

}

/// <summary>

/// 更新用户信息

/// </summary>

/// <param name="objuser"></param>

/// <returns>更新成功与否</returns>

private bool UpdateUser(User objuser)

{

string sql = "UPDATE T_User SET UserCode = ‘" + objuser.UserCode +

"‘,Password = ‘" + objuser.Password + "‘ WHERE UserId=" + objuser.UserId;

SQLHelper sqlhelper = new SQLHelper();

return sqlhelper.AddDelUpdate(sql) > 0;

}

private bool CheckUserExist(string UserCode, string UserId)

{

string sql = "select * from T_User where UserCode = ‘" + UserCode + "‘ and

UserId <> " + UserId;

SQLHelper sqlhelper = new SQLHelper();

DataTable dt = sqlhelper.Selectinfo(sql);

return dt == null || (dt != null && dt.Rows.Count == 1);

}

删除数据

代码参考编辑数据即可。

http handler处理程序:

if (strOperation == "del")

{

strResponse = DeleteUser(forms.Get("delId").ToString()) ? "删除成功!" :

"删除失败,请确认!";

}

context.Response.Write(strResponse);

private bool DeleteUser(string userId)

{

bool flag = true;

string[] idlist = userId.Split(‘,‘);

foreach (var sid in idlist)

{

string sql = "DELETE FROM T_User WHERE UserId=" + userId;

SQLHelper sqlhelper = new SQLHelper();

flag = sqlhelper.AddDelUpdate(sql) > 0;

}

return flag;

}

时间: 2025-01-02 17:49:18

QGrid系列教程--查询数据、编辑数据、删除数据的相关文章

SQL中CRUD C——create 添加数据 R——read 读取数据 U——update 修改数据 D——delete 删除数据

在SQL server中对数据库的操作: 删除表:drop table 表名修改表:alter table 表名 添加列add 列名 列类型alter table 表名 drop column 列名 删除数据库drop database 数据库名 CRUD操作C——create 添加数据 R——read 读取数据 U——update 修改数据 D——delete 删除数据 1.添加数据insert into 表名 values('第一列值','第二列值')——数据库中用单引号 每一列都要添加 第

向后端请求数据 以及像后端发送数据要求(删除数据和添加数据)

删除数据和添加数据只能后端操作 删除数据和添加数据都要用到的html(一)部分 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="../css/bootstrap.min.css"

SignalR系列教程:服务器广播与主动数据推送

本篇是本系列入门篇的最后一遍,由于工作关系,接触SignalR的时间不是很多.等下次有空的话我会写一个利用“SignalR”开发一个在线聊天室的系列博文.近期的话我更偏向于更新框架设计相关的文章,到时候我会在文章中分享我在工作中开发的“日志框架”.“缓存框架”,“分布式下载框架”等.有兴趣的朋友可以关注我,一起交流. 本篇博文参考:https://www.asp.net/signalr/overview/getting-started/tutorial-server-broadcast-with

1、显示数据表、删除数据——数据库操纵、简单的分页

 数据库: 创建数据库 create database note10 charset utf8; 使用数据库 use note10; 设置数据库自身编码 set names gbk; 创建表 create table show_register( id int auto_increment primary key, username varchar(32) unique not null, password char(32) not null, age tinyint unsigned, e

MySQL插入、更新、删除数据

1.插入数据:由于下表的id会自增,故赋值null. 注意:字符串用'   '单引号,不能双引号,英文状态下. 可以写上部分属性名进行插入操作,如bookTypeId没写,默认NULL. 也可以写上所有的属性名进行插入操作: 同时插入多条数据,重点是:VALUES(),(),(),.....(); ======================================================== 2.更新数据 单条更新前: 单条更新后:(属性名之间用英文的逗号隔开) 多条更新之前:

PostgreSQL删除数据

到目前为止我们已经解释了如何向表中增加数据以及如何改变数据.剩下的是讨论如何删除不再需要的数据.和前面增加数据一样,删除数据也必须是从表中整行整行地删除.在上一节里我们提到了 SQL没有提供直接指定某一行的方法.因此,删除行只能是通过声明被删除行必须匹配的条件进行.如果你在表上有一个主键,那么你可以声明准确的行.当然,你也可以删除匹配条件的一组行,或者一次删除表中的所有行. 我们使用DELETE命令删除行.它的语法和UPDATE 命令非常类似.用: DELETE FROM Sites WHERE

【mongo】pymongo通过_id删除数据

来源:http://www.educity.cn/wenda/361741.html pymongo 根据 objectId _id 来删除数据想要删除数据,根据_id ,是最靠谱的,具体方法因为 _id 是一个ObjectId()对象,所以要先引入对像,对象又在那里呢?看书,发现是一种bson片段生成的ObjectId,那么会不会把这个对象放到bson里呢,试了一下 from bson import ObjectIdcollGroup.remove({"_id":ObjectId('

批量删除数据表

方法一:DeleteForm表名 方法二:TRUNCATETABLE在功能上与不带WHERE子句的DELETE语句相同:二者均删除表中的全部行.但TRUNCATETABLE比DELETE速度快,且使用的系统和事务日志资源少.DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATETABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放.TRUNCATETABLE删除表中的所有行,但表结构及其列.约束.索引等保持不变.新行标识所用的计数值重置为

oracle数据库删除数据的两种方式

当表中的数据不需要是,则应该删除该数据,并释放所占用的空间; 删除表中的数据有delete和truncate两种方式,下面分别介绍: 一.delete语句 (1)有条件删除    语法格式:delete [from]  table_name  [where condition]; 如:删除users表中的userid为'001'的数据:delete from users where userid='001'; (2)无条件删除整个表数据 语法格式:delete  table_name; 如:删除