下面的案例是在net环境下实现的extjs与数据库的交互,这里只是用extjs调用了一个后台的方法,因为如果再涉及到数据库的话,那代码量会很大,然后逻辑也就会有些复杂,我这样用extjs实现对后台类的方法的调用,因为我们操作数据库的代码肯定是在后台类中写的,相信你也能够用此联想到下一步该怎么用extjs来操作数据库了。
。
这里我们用到了2个页面,Default.aspx页面和Response.aspx页面。
首页先简历一个default.aspx,下面是前台页面代码,不需要在后台页面类中写任何代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>ExtJs2.0学习系列(10)--Ext-EditorGridPanel与后台类及数据库的交互</title>
<link type="text/css" href="Ext/resources/css/ext-all.css" rel="stylesheet" />
<script type="text/javascript" src="Ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="Ext/ext-all.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
var jsonData=[ {id:1,name: '唐骏', age:50,sex:'男'},
{id:2,name: '巴菲特', age: 60,sex:'男'},
{id:3,name: '比尔盖茨', age: 55,sex:'男'},
{id:4, name:'于海涛', age: 22,sex:'男'}
];
var _store=new Ext.data.JsonStore({data:jsonData,fields:["id","name","age","sex"]});//data表示store初始化后,要加载的内联数据
var colm=new Ext.grid.ColumnModel([
{header:"ID",dataIndex:"id",sortable:true,width:124},
{header:"姓名",dataIndex:"name",sortable:true,width:124,editor:new Ext.form.TextField({allowBlank:false})},
{header:"年龄",dataIndex:"age",sortable:true,width:124},
{header:"性别",dataIndex:"sex",sortable:true,width:124}
]);
var gridpanel=new Ext.grid.EditorGridPanel({
renderTo:"JsonReader",
title:"JsonReader",
width:500,
height:300,
cm:colm,
store:_store,
listeners:{
"afteredit":function(e){
var r=e.record;
var c=e.field;
var value=e.value;
Ext.Ajax.request({
url:"Response.aspx",
method:"POST",
params:{
typename:c,//获取列名
values:value//获取选中的value值
},
success:function(response,opiton){
alert(response.responseText);
},
failure:function(){
alert(response.responseText);
}
})
}
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="JsonReader"></div>
</div>
</form>
</body>
</html>
下面是Response.aspx的,该页面不需要在前台页面写任何代码,因为该页面的作用是对接收上一个页面传过来的参数,并操作数据库,所以我们只需要在该页面的 Page_Load方法内添加几行代码即可,然后还需要定义一个操作数据库的类。代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Response : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string typename=Request.Form["typename"];
string values=Request.Form["values"];
result(typename, values);
}
}
protected void result(string typename, string values)
{
Response.Clear();
if (typename == "name" && values == "yht")
{
Response.Write("修改成功!");
}
else
{
Response.Write("修改失败!");
}
Response.ContentType = "application/json";
Response.End();
}
}
实现效果如下: