ExtJs GridPanel简单的增删改实现代码

1.首先看下效果图:

2.ext代码


代码如下:

/// <reference path="http://www.cnblogs.com/Resources/ExtJs/vswd-ext_2.0.2.js" />
Ext.namespace('XQH.ExtJs.Frame');
XQH.ExtJs.Frame.RoleManage = function() {
this.init();
};
Ext.extend(XQH.ExtJs.Frame.RoleManage, Ext.util.Observable, {
init: function() {
//表单
addForm = new Ext.form.FormPanel({
id: 'addRoleForm',
width: 460,
height: 250,
//样式
bodyStyle: 'margin:5px 5px 5px 5px',
frame: true,
xtype: 'filedset',
labelWidth: 60,
items:
[
{
xtype: 'fieldset',
title: '角色信息',
collapsible: true,
autoHeight: true,
autoWidth: true,
items:
[
{
xtype: 'textfield',
name: 'RoleName',
fieldLabel: '角色名称',
emptyText: '必填',
blankText: '角色名称不能为空',
allowBlank: false,
maxLength: 10,
maxLengthText: '角色不能超过10个字符',
anchor: '98%'
}
]
},
{
xtype: 'fieldset',
title: '角色说明',
collapsible: true,
autoHeight: true,
autoWidth: true,
items:
[
{ html: '这是说明信息...' }
]
}
],
reader: new Ext.data.JsonReader({
root: 'data',
fields: [
{ name: 'RoleId', mapping: 'RoleId', type: 'int' },
{ name: 'RoleName', mapping: 'RoleName', type: 'string' }
]
})
});
//新增用户窗口
addWin = new Ext.Window({
id: 'addRoleWin',
title: '新增角色',
width: 480,
height: 210,
//背景遮罩
modal: true,
//重置大小
resizable: false,
//当关闭按钮被点击时执行的动作
closeAction: 'hide',
plain: true,
buttonAlign: 'center',
items:addForm,
buttons:
[
{ text: '关闭', handler: function() { Ext.getCmp('addRoleWin').hide(); } },
{ text: '提交', id: 'btnSubmit' }
]
});
//添加角色事件
function addRoleFunction() {
var submitButton = this;
submitButton.disable();
var userForm = Ext.getCmp("addRoleForm");
if (userForm.form.isValid()) {
userForm.form.doAction('submit', {
url: "http://www.cnblogs.com/Service/SystemService/RoleService.ashx?Method=AddRole",
method: 'post',
waitTitle: "请稍候",
waitMsg: '正在添加数据...',
success: function(form, action) {
submitButton.enable();
Ext.getCmp('roleGD').store.reload();
userForm.ownerCt.hide();
},
failure: function(form, action) {
var tip = "新增失败!";
if (action.result.rspText != "")
tip = action.result.rspText;
Ext.Msg.alert('提示', tip);
submitButton.enable();
}
});
}
else {
submitButton.enable();
}
};
//添加按钮单击事件
function btnAddClick() {
Ext.getCmp('addRoleForm').form.reset();
Ext.getCmp("addRoleWin").setTitle('新增角色');
Ext.getCmp("addRoleWin").buttons[1].handler = addRoleFunction;
Ext.getCmp("addRoleWin").show();
};
//修改角色事件
function updateRoleFunction() {
var submitButton = this;
submitButton.disable();
var userForm = Ext.getCmp("addRoleForm");
var id = userForm.form.reader.jsonData.data[0].RoleId;
if (userForm.form.isValid()) {
userForm.form.doAction('submit', {
url: 'http://www.cnblogs.com/Service/SystemService/RoleService.ashx?Method=UpdateRoleById&RoleId=' + id,
method: 'post',
//params:{},
waitTitle: "请稍候",
waitMsg: '正在保存数据...',
success: function(form, action) {
submitButton.enable();
Ext.getCmp('roleGD').store.reload();
userForm.ownerCt.hide();
},
failure: function(form, action) {
var tip = "编辑活动保存失败!";
if (action.result.text != "" & action.result.text != null)
tip = action.result.text;
Ext.Msg.alert('提示', tip);
submitButton.enable();
}
});
}
else {
submitButton.enable();
}
};
//修改按钮单击事件
function btnUpdateClick() {
var grid = Ext.getCmp('roleGD');
if (grid.getSelectionModel().getSelections()[0] == undefined) {
Ext.Msg.alert("提示", "请选中要修改的行");
}
else {
Ext.getCmp('addRoleWin').setTitle('修改角色');
Ext.getCmp("btnSubmit").handler = updateRoleFunction;
Ext.getCmp("addRoleForm").form.reset();
var roleId = grid.getSelectionModel().getSelections()[0].data.RoleId;
var url = 'http://www.cnblogs.com/Service/SystemService/RoleService.ashx?Method=GetRoleById&roleId=' + roleId;
Ext.getCmp("addRoleWin").show();
Ext.getCmp("addRoleForm").load({
url: url,
waitTitle: "请稍候",
waitMsg: '正在加载数据...',
success: function(form, action) {
},
failure: function(form, action) {
var tip = "提交失败";
if (action.response.responseText != "")
tip = action.response.responseText;
Ext.Msg.alert('提示', tip);
}
});
}
};
//删除角色函数
function delRoleFunction() {
var grid = Ext.getCmp('roleGD');
if (grid.getSelectionModel().getSelections()[0] == undefined) {
Ext.Msg.alert("提示", "请选中要删除的角色");
}
else {
Ext.MessageBox.confirm('提示', '确实要删除所选的角色吗?', function(btn) {
if (btn == 'yes') {
var conn = new Ext.data.Connection();
conn.request
({
url: 'http://www.cnblogs.com/Service/SystemService/RoleService.ashx?Method=DeleteRoleById',
params: { Id: grid.getSelectionModel().getSelections()[0].data.RoleId },
method: 'post',
scope: this,
callback: function(options, success, response) {
if (success) {
Ext.getCmp('roleGD').store.reload();
}
else {
Ext.MessageBox.alert("提示", "删除失败!");
}
}
});
}
});
}
};
//工具栏
toolBar = new Ext.Toolbar({
items:
[
{ text: '新增', id: 'btnAdd' },
'-',
{ text: '修改', id: 'btnUpdate' },
'-',
{ text: '删除', handler:delRoleFunction }
]
});
//新增按钮
var addUserBtn = Ext.getCmp('btnAdd');
addUserBtn.on('click', btnAddClick);
//修改按钮
var btnUpdate = Ext.getCmp('btnUpdate');
btnUpdate.on('click', btnUpdateClick);
var dataStore = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({
url: 'http://www.cnblogs.com/Service/SystemService/RoleService.ashx?Method=GetAllRoles'
}),
reader: new Ext.data.JsonReader({
root: 'Table',
totalProperty: 'RecordCount',
id: 'RoleId',
fields: ['RoleId', 'RoleName']
})
});
dataStore.load({ params: { start: 0, limit: 20} });
//grid
var roleGrid = new Ext.grid.GridPanel({
region: 'center',
id: 'roleGD',
title: '角色管理',
store: dataStore,
columns:
[
new Ext.grid.RowNumberer({ header: "编号", width: 50 }),
{ header: "RoleId", width: 50, sortable: false, dataIndex: 'RoleId', hidden: true },
{ header: "角色名称", width: 50, sortable: true, dataIndex: 'RoleName' }
],
loadMask: { msg: "加载中..." },
stripeRows: true,
viewConfig: {
forceFit: true
},
sm: new Ext.grid.RowSelectionModel({ singleSelect: true }),
bbar: new Ext.PagingToolbar({
pageSize: 20,
store: dataStore,
displayInfo: true,
displayMsg: "显示第 {0} 条到 {1} 条记录,一共 {2} 条",
emptyMsg: "没有记录"
}),
tbar: toolBar
});
//布局
var roleView = new Ext.Panel({
renderTo: 'roleMain',
height: 550,
layout: 'border',
border: false,
items: [roleGrid]
});
},
destroy: function() {
}
});

3.linq代码


代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace XQH.ExtJs.LinqDatabase
{
public class RoleLinqAccess
{
LinqDatabaseDataContext db = new LinqDatabaseDataContext();
/// <summary>
/// 获取所有角色
/// </summary>
/// <param name="start"></param>
/// <param name="limit"></param>
/// <param name="total"></param>
/// <returns></returns>
public List<XRole> GetAllRole(int start,int limit,out int total)
{
var q = from r in db.XRole
select r;
total = q.Count();
if (limit == 0)
{
return q.ToList();
}
else
{
return q.Skip(start).Take(limit).ToList();
}
}
/// <summary>
/// 根据ID获取角色
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public XRole GetRoleById(int id)
{
var q = from r in db.XRole
where r.RoleId == id
select r;
return q.First();
}
/// <summary>
/// 新增角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public List<XRole> AddRole(XRole role)
{
db.XRole.InsertOnSubmit(role);
db.SubmitChanges();
return db.XRole.ToList();
}
/// <summary>
/// 根据ID删除角色
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public List<XRole> DelRoleById(int id)
{
var q = from r in db.XRole
where r.RoleId == id
select r;
db.XRole.DeleteAllOnSubmit(q);
db.SubmitChanges();
return db.XRole.ToList();
}
/// <summary>
/// 更新角色
/// </summary>
/// <param name="role"></param>
/// <returns></returns>
public List<XRole> UpdateRole(XRole role)
{
var q = from r in db.XRole
where r.RoleId == role.RoleId
select r;
foreach (XRole r in q)
{
r.RoleId = role.RoleId;
r.RoleName = role.RoleName;
}
db.SubmitChanges();
return db.XRole.ToList();
}
}
}

4.ashx代码


代码如下:

/// <summary>
/// 获取全部角色
/// </summary>
public void GetAllRoles()
{
StringBuilder jsonData = new StringBuilder();
int start = Convert.ToInt32(Request["start"]);
int limit = Convert.ToInt32(Request["limit"]);
int total = 0;
List<XRole> lsRole = roleAccess.GetAllRole(start, limit, out total);
JsonConvert<XRole> json = new JsonConvert<XRole>();
jsonData = json.ToGridPanel(lsRole, total);
Response.Write(jsonData);
Response.End();
}
/// <summary>
/// 根据ID获取角色
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public void GetRoleById()
{
StringBuilder jsonData = new StringBuilder();
bool success = false;
string rspText = string.Empty;
string id = Request["RoleId"].ToString();
try
{
XRole role = roleAccess.GetRoleById(Convert.ToInt32(id));
success = true;
rspText = "success";
JsonConvert<XRole> json = new JsonConvert<XRole>();
jsonData = json.ToFormPanel(success, rspText, role);
}
catch (Exception ex)
{
success = false;
rspText = ex.Message;
}
Response.Write(jsonData);
Response.End();
}
/// <summary>
/// 新增角色
/// </summary>
public void AddRole()
{
string jsonStr = string.Empty;
bool success = false;
string rspText = string.Empty;
string roleName = Request["RoleName"].ToString();
XRole role = new XRole();
role.RoleName = roleName;
try
{
roleAccess.AddRole(role);
success = true;
rspText = "新增成功!";
}
catch (Exception ex)
{
success = false;
rspText = ex.Message;
}
jsonStr = "{success:" + success.ToString().ToLower() + ",message:'" + rspText + "!'}";
Response.Write(jsonStr);
Response.End();
}
/// <summary>
/// 根据角色编号修改角色
/// </summary>
public void UpdateRoleById()
{
string jsonStr = string.Empty;
bool success = false;
string rspText = string.Empty;
string RoleId = Request["RoleId"].ToString();
string RoleName = Request["RoleName"].ToString();
XRole role = new XRole();
role.RoleId = Convert.ToInt32(RoleId);
role.RoleName = RoleName;
try
{
roleAccess.UpdateRole(role);
success = true;
rspText = "修改成功!";
}
catch (Exception ex)
{
success = false;
rspText = ex.Message;
}
jsonStr = "{success:" + success.ToString().ToLower() + ",message:'" + rspText + "!'}";
Response.Write(jsonStr);
Response.End();
}
/// <summary>
/// 根据ID删除用户
/// </summary>
public void DeleteRoleById()
{
string jsonStr = string.Empty;
bool success = false;
string rspText = string.Empty;
try
{
int id = Convert.ToInt32(Request["Id"].ToString());
List<XRole> lsRole = roleAccess.DelRoleById(id);
success = true;
rspText = "success";
}
catch (Exception ex)
{
success = true;
rspText = ex.Message;
}
jsonStr = "{success:" + success.ToString().ToLower() + ",message:'" + rspText + "!'}";
Response.Write(jsonStr);
Response.End();
}

(0)

相关推荐

  • extjs 学习笔记 四 带分页的grid

    因此,现在几乎所有的grid控件都会支持分页功能.extjs也不例外,它对分页也提供了强大而方便的支持,使得我们在分页处理上可以得心应手. 在extjs中,类Ext.PagingToolbar封装了关于分页的操作,该类从Toolbar继承而来,单从名字上看,我们也猜得出这是一个能够处理分页的工具栏.好吧,那我们就来看看如何构造这样一个工具栏吧.PagingToolbar类的构造函数需要一个json对象来进行配置,在js中,使用json对象来提供所需参数非常方便,这样使得我们可以只填写感兴趣的参数

  • ExtJS下grid的一些属性说明

    1.界面修改(css style): Extjs中界面风格与我们产品本身的风格有很大不同,从边框.选中行的颜色到鼠标移动到的行的颜色.菜单等,几乎都不同.Extjs对这些样式的设置都是由css完成的.如: 选中行的颜色就可用如下设置完成: .x-grid3-row-selected{background:#c6e2ff!important;} 其他的都类似,只要找到对应的class, 然后设置要修改的部分即可. 2. 属性的作用(About Ext.grid. GroupingView, Edi

  • ExtJS 4.2 Grid组件单元格合并的方法

    ExtJS 4.2 Grid组件本身并没有提供单元格合并功能,需要自己实现这个功能. 目录 1. 原理 2. 多列合并 3. 代码与在线演示 1. 原理 1.1 HTML代码分析 首先创建一个Grid组件,然后查看下的HTML源码. 1.1.1 Grid组件 1.1.2 HTML代码 从这些代码中可以看出,Grid组件可分为grid-header和grid-body 两块区域(若含有工具栏和分页栏,它们都会含有各自的独立区域). 其中grid-body包含了许多tr元素,每一个tr都是代表Gri

  • ExtJs grid行 右键菜单的两种方法

    在这下边: 方法一 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="gridContextMenu.aspx.cs" Inherits="gridContextMenu" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &

  • Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法

    在Extjs中的GridPanel会有这样的情况,隐藏列会显示在menuDisabled中 如下图: 但是这个一般没有什么用处,只是用于后台取值的作用. so 加一个属性:hideable:false就可以搞定了 复制代码 代码如下: { header: "attendanceId", dataIndex: "attendanceId", hideable: false, hidden: true },

  • extjs grid设置某列背景颜色和字体颜色的方法

    css代码: 复制代码 代码如下: .x-grid-back-red { background: #FF0000; } js代码: 复制代码 代码如下: { header : '分成类型', dataIndex : 'divideType', renderer : function(v,m){ m.css='x-grid-back-red'; return v; }, width : 60 } 或者直接这样写也可以 复制代码 代码如下: { header : '编号', dataIndex :

  • Extjs4 GridPanel 的几种样式使用介绍

    简单表格 排序,显示某列,读取本地数据 复制代码 代码如下: //本地数据 var datas = [ ['1', 'gao', 'man'], ['2', 'gao', 'man'], ['3', 'gao', 'man'] ]; //创建面板 Ext.create('Ext.grid.Panel', { title: 'easy grid', width: 400, height: 300, renderTo: Ext.getBody(), frame: true, viewConfig:

  • extjs grid取到数据而不显示的解决

    找了快1个小时,就是不知道错误在哪里...郁闷 我在鼠标左侧点击tree节点,在右侧创建一个标签页,这个已经能够实现,于是我再在新建的标签页里嵌套一个Grid. 奇怪的问题出现了.. FF和IE下都没报错.但是Grid就是不显示.本来我以为我代码错误.于是我狂找我的代码问题,无意中关掉FF的firbug插件界面,grid就现实出来了...原来只要我的窗口发生任何变化Grid才会显示出来. 请问这是我代码问题还是bug?如何解决? 补充一下,我直接在TabPanel里面用items管理grid对象

  • ExtJS Grid使用SimpleStore、多选框的方法

    复制代码 代码如下: ///<reference path="./vswd-ext_2.0.2.js" /> Ext.onReady(function(){ var data = [ [1,"wilson.fu",10], [2,"wilson.fu2",20], [3,"wilson.fu3",30] ]; var sqldata = new Array() ; for(var i=0;i<10;i++)

  • Extjs4 GridPanel的主要配置参数详细介绍

    1.Ext.grid.GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn:自动充满表格未用空间的列,参数为列id,该id不能为0 stripeRows:表格是否隔行换色,默认为false cm.colModel:表格的列模式,渲染表格时必须设置该配置项 sm.selModel:表格的选择模式,默认为Ext.grid.RowSelectionModel enableHdMenu:

随机推荐