Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目
经过上一篇博客,本节主要是来看实现的功能是后台的数据通过json数据传过来,前台修改的数据再传回数据库之后页面再次更新table中的数据;
图示:
实例:前台的代码
<%--表格显示区--%>
<table id="tt" " title="设置打分规则" class="easyui-datagrid" style="width: auto;
height: 400px;" idfield="itemid" pagination="true" iconcls=" icon-save" remoteSort="false"
data-options="rownumbers:true,
url:'JSONData.ashx/ProcessRequest',pageSize:5,pageList:[5,10,15,20],
method:'get',toolbar:'#tb' ," fitcolumns="true" striped="true">
<%--url是获取数据的地址--%>
<%--url:'JSON.ashx/ProcessRequest'--%>
<%-- 表格标题--%>
<thead >
<tr >
<th data-options="field:'ScoreStyleID',checkbox:true"> 打分项目类别ID</th>
<th data-options="field:'ScoreStyleName',width:100",sortable:"true">打分项目类别名称</th>
<th data-options="field:'ScoreStyleState',width:120,align:'right'">打分项目类别描述</th>
<th data-options="field:'Score',width:120,align:'right'">打分项目单位分数</th>
<th data-options="field:'ScoreItem',width:100">打分项目单位</th>
<th data-options="field:'AdminID',width:100">管理员</th>
<th data-options="field:'PublishDate',width:100">发布时间</th>
</tr>
</thead>
<%--表格内容--%>
<tbody> </tbody>
</table>
上面主要是设定table的属性,具体每个属性大家可以详细查中文文挡来深入学习
下面是关于增删改查的代码:
var url;
//添加管理员
function newUser() {
$('#dlg').dialog('open').dialog('setTitle', '添加管理员');//设定表头
$('#fm').form('clear');//清空窗体数据
document.getElementById("test").value = "add";//设定表示为后台调不同方法数据提供接口 }
//修改管理员
function editUser() {
$('#fm').form('clear');
var row = $('#tt').datagrid('getSelected');
if (row) {
$('#dlg').dialog('open').dialog('setTitle', '修改管理员');
//绑定数据列表
$('#firstname').val(row.ScoreStyleName);
$('#lastname').val(row.Score);
$('#unit').val(row.ScoreItem);
$('#message').val(row.ScoreStyleState);
$('#ID').val(row.ScoreStyleID);
document.getElementById("test").value = "modify";//设定表示为后台调不同方法数据提供接口
$('#fm').form('load', row); }
}
//保存信息
function saveUser() {
//获取页面中输入的值
var firstname = document.getElementById("firstname").value;
var lastname = document.getElementById("lastname").value;
var test = document.getElementById("test").value;
var unit = document.getElementById("unit").value;;
var message = document.getElementById("message").value;
var ID = document.getElementById("ID").value;
//var t = "firstname=" + firstname + "&lastname=" + lastname + "&unit=" + unit + "&message=" + message + "&ID=" + ID; $('#fm').form('submit', {
//设定地址与传递参数到后台
url: "JSONData.ashx?firstname=" + firstname + "&lastname=" + lastname + "&unit=" + unit + "&message=" + message + "&test=" + test + "&ID=" + ID,
onSubmit: function () {
return $(this).form('validate');
},
//判断结果是否正确
success: function (result) {
if (result.indexOf("T") == 0) { alert('恭喜您,信息添加成功!')
$('#dlg').dialog('close'); // 关闭窗口
$('#tt').datagrid('reload');
}
else {
alert('保存失败,请您核对!')
}
var result = eval('(' + result + ')');
if (result.success) {
$('#dlg').dialog('close'); // close the dialog
$('#tt').datagrid('reload');
$.message.alert('提示', '保存成功!', 'info'); // reload the user data
} else {
//$.messager.show({
// title: 'Error',
// msg: result.msg
//});
}
}
});
}
//删除管理员
function removeUser() {
document.getElementById("test").value = "delete";//设定表示为后台调不同方法数据提供接口
var test = document.getElementById("test").value;
var row = $('#tt').datagrid('getSelected');
if (row) {
$.messager.confirm('提示', '你确定要删除这条信息吗?', function (r) {
if (r) {
$('#fm').form('submit', {
url: "JSONData.ashx?ID=" + row.ScoreStyleID + "&test=" + test,
onSubmit: function () {
},
//判断结果是否正确
success: function (result) {
if (result.indexOf("T") == 0) {
$('#dlg').dialog('close');
alert('恭喜您,信息删除成功!')
// close the dialog
$('#tt').datagrid('reload');
//$('#fm').form('submit');
}
else {
alert('添加失败,请重新操作!')
}
var result = eval('(' + result + ')'); }
});
}
}
);
}
}
//查询并把数据传递给后台,数组
function getQueryParams(queryParams) {
var StartTime = $("#StartTime").datebox("getValue");
var EndTime = $("#EndTime").datebox("getValue");
var KeyWord = document.getElementById("KeyWord").value;
var Category = $("#Category").combobox("getValue");
queryParams.StartTime = StartTime;
queryParams.EndTime = EndTime;
queryParams.KeyWord = KeyWord;
queryParams.Category = Category;
return queryParams;
} //增加查询参数,重新加载表格
function reloadgrid() { //查询参数直接添加在queryParams中 var queryParams = $('#tt').datagrid('options').queryParams;
getQueryParams(queryParams);
$('#tt').datagrid('options').queryParams = queryParams;//传递值 $("#tt").datagrid('reload');//重新加载table }
接下来是后台中的一般处理程序中的代码(主要是负责读取数据库中的数据)
首先是判断前台请求的是哪种方法:
/// <summary>
/// 条件查询公告
/// </summary>
/// <param name="context"></param>
public void ProcessRequest(HttpContext context)//context中包含前台与后台来回传递的值
{//判断前台请求的是增删改查的哪一个
string command = context.Request.QueryString["test"];//前台传的标示值
if (command == "add")
{//调用添加方法
Add(context);
}
else if (command == "delete")
{//调用删除方法
Delete(context);
}
else if (command == "modify")
{//调用修改方法
Modify(context);
}
else
{//调用查询方法
Query(context);
}
}
查询中的方法:
//================================================================
//获取分页和排序信息:页大小,页码,排序方式,排序字段
int pageRows, page;
pageRows = 10;
page = 1;
string order, sort, oderby; order = sort = oderby = "";
if (null != context.Request.QueryString["rows"])
{
pageRows = int.Parse(context.Request.QueryString["rows"].ToString().Trim()); }
if (null != context.Request.QueryString["page"])
{ page = int.Parse(context.Request.QueryString["page"].ToString().Trim()); }
if (null != context.Request.QueryString["sort"])
{ order = context.Request.QueryString["sort"].ToString().Trim(); }
if (null != context.Request.QueryString["order"])
{ sort = context.Request.QueryString["order"].ToString().Trim(); } //===================================================================
//组合查询语句:条件+排序
StringBuilder strWhere = new StringBuilder();
if (key != "")
{
strWhere.AppendFormat(" ScoreStyleName like '%{0}%' and ", key);
}
if (category != "")
{
strWhere.AppendFormat(" AdminID= '{0}' and ", category);
}
if (startTime != "")
{
strWhere.AppendFormat(" PublishDate >= '{0}' and ", startTime);
}
if (endTime != "")
{
strWhere.AppendFormat(" PublishDate <= '{0}' and ", endTime);
} //删除多余的and
int startindex = strWhere.ToString().LastIndexOf("and");//获取最后一个and的位置
if (startindex >= 0)
{
strWhere.Remove(startindex, 3);//删除多余的and关键字
}
if (sort != "" && order != "")
{
//strWhere.AppendFormat(" order by {0} {1}", sort, order);//添加排序
oderby = order + " " + sort;
}
//DataSet ds = Bnotice.GetList(strWhere.ToString()); //调用不分页的getlist //调用分页的GetList方法
DataSet ds = scorebll.GetListByPage(strWhere.ToString(), oderby, (page - 1) * pageRows + 1, page * pageRows);
int count = scorebll.GetRecordCount(strWhere.ToString());//获取条数
string strJson = ToJson.Dataset2Json(ds, count);//DataSet数据转化为Json数据
context.Response.Write(strJson);//返回给前台页面
context.Response.End();
这个过程很是漫长,在调试的过程中,遇到了各种各样的问题,主要是浏览器的缓存问题耽误了好长时间,龙哥给了大力的支持,通过实现此功能,对ajax,一般处理程序的理解深刻多了;框架的使用提高我们开发的效率;
Json+ajax数据界面不刷新,页面更加的贴近客户的需求,查询效率大大的提升。
接下来会给大家分享学习分页(自己查找资料中学习总结的知识),查询数据的分页的知识与实例。敬请期待……
Jquery EasyUI +Ajax +Json +一般处理程序 实现数据的前台与后台的交互 --- 善良公社项目的更多相关文章
- 记一次艰难的jquery easy-ui ajax post 体验
分享的经验和教训是: 1.jquery easy-ui ajax post 复杂的Json给后端解析,后端如果接收和解析 2.asp.net webform jquery easy-ui datagr ...
- jquery easyui easyui-treegrid 使用异步加载数据
jquery easyui easyui-treegrid 使用异步加载数据 jquery easyui easyui-treegrid 异步请求 >>>>>>&g ...
- 使用jQuery的$.ajax()向MVC控制器Post数据
一整天不是在看书,就是做练习.今天还是把最难实现的怎样使用jQuery的$.ajax()向MVC控制器Post数据分享. 创建一个添加数据的存储过程: 在MVC应用程序下的Entities目录下,修改 ...
- jQuery使用ajax跨域请求获取数据
jQuery使用ajax跨域请求获取数据 跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的 ...
- 雷林鹏分享:jQuery EasyUI 表单 - 过滤下拉数据网格
jQuery EasyUI 表单 - 过滤下拉数据网格 下拉数据网格(Combogrid)组件和下拉框(Combobox)组件的共同点是,除了都具有下拉面板以外,它们都是基于数据网格(Datagrid ...
- 利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先来个简单的实例热热身吧. 1.无参数的方法调用 asp.net code: view plaincopy to clip ...
- 类型:Jquery;问题:jquery调用后台带参数方法;结果:利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法。
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. [WebMethod] 命名空间 1.无参数的方法调用, 注意:1.方法一定要静态方法,而且要有[WebMethod] ...
- 使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析
使用所见即所得文本编辑器编辑文本存入数据库后通过ajax获取服务器json_encode的数据到前台,文本内容上边的html标签不解析 因为我在前台使用了jquery的text()方法,而不是html ...
- JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法(转)
原文:JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法 jquery-easyui是一个基于jquery的图形界面插件,利用easyui可以创建很多好看的网页界面 ...
随机推荐
- jmeter分布式测试远程连接失败
jmeter分布式部署其实很简单.但今天测试的时候发现了一个坑,远程连接一直失败. 原因:服务器上部署了slave,而这台服务器上有多个网卡.举个例子:ip分别为:192.168.100.6,10.1 ...
- jQuery 选择器 prop() 和attr()
Day30 jQuery 1.1.1.1 什么是jQuery? n jQuery是javaScript的前端框架.对常见的对象和常用的方法进行封装,使用更方便. 它兼容CSS3,还兼容各种浏览器.文档 ...
- 设计模式之中介者模式(Mediator )
中介者模式是关于数据交互的设计模式,该模式的核心是一个中介者对象,负责协调一系列对象之间的不同的数据请求,这一系列对象成为同事类.如房产中介(简直不想提它),买房的卖房的,租房的放租的都到房产中介那里 ...
- PHP 常用函数集合
PHP is_numeric() 函数 由 陈 创建, 最后一次修改 2016-12-02 定义和用法 is_numeric() - 检测变量是否为数字或数字字符串 语法 bool is_numeri ...
- PHP 实例 - AJAX 实时搜索
AJAX Live Search 在下面的实例中,我们将演示一个实时的搜索,在您键入数据的同时即可得到搜索结果. 实时的搜索与传统的搜索相比,具有很多优势: 当键入数据时,就会显示出匹配的结果 当继续 ...
- Android开发技巧——定制仿微信图片裁剪控件
拍照--裁剪,或者是选择图片--裁剪,是我们设置头像或上传图片时经常需要的一组操作.上篇讲了Camera的使用,这篇讲一下我对图片裁剪的实现. 背景 下面的需求都来自产品. 裁剪图片要像微信那样,拖动 ...
- Android系统对话框——自定义关闭
Android系统对话框--自定义关闭 Dialog是我们在项目中经常用到的,5.x以后的Dialog也很好看,很安卓风,Android也给我们提供了新的包,低版本可以显示一样的效果.我们在使用的导入 ...
- Objective-C与Java类的一些区别
Objective-C与Java类的一些区别 OC类和C一样,需要有声明和定义,先上一段OC代码 #import <Foundation/Foundation.h> /* * 声明一个Pe ...
- 将树形递归转换为loop
class Stack(object): def __init__(self,**kwargs): self.__dict__.update(kwargs) def __str__(self): re ...
- React native和原生之间的通信
RN中文网关于原生模块(Android)的介绍可以看到,RN前端与原生模块之 间通信,主要有三种方法: 1)使用回调函数Callback,它提供了一个函数来把返回值传回给JavaScript. 2)使 ...