1 建立ASP.net Web应用程序
2 在App_Data文件夹内建立数据库db_test
建立2张表,通过use_id的外键找出‘这个学生的成绩’
3 插入一些数据,数据可以自定义
4 解决方案右键,建立类库Model(此类库为数据库中的表抽象出一个类模型)
若:前台要显示学生的use_id、use_name 、use_sex、 use_address、 sco_subject、 sco_score。
即建立一个show_score.cs
代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Model{ public class show_score { private int _use_id; public int use_id //字段user_id { get { return _use_id; } set { _use_id = value; } }private string _use_name; public string use_name //字段use_name { get { return _use_name; } set { _use_name = value; } }private string _use_sex; public string use_sex //字段use_sex { get { return _use_sex; } set { _use_sex = value; } }private string _use_address; public string use_address //字段use_address { get { return _use_address; } set { _use_address = value; } }private string _sco_subject; public string sco_subject //字段sco_subject { get { return _sco_subject; } set { _sco_subject = value; } }private int _sco_score; public int sco_score { get { return _sco_score; } set { _sco_score = value; } } }}
5 建立一个公用的服务库类Service
Service中建立DBHelper.cs和show_score_Service.cs
DBHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlClient;//数据库连接的命名空间using System.Data;//DataSet的命名空间namespace Service{ public class DBHelper { private static SqlConnection connection;//创建connection连接对象 public static SqlConnection Conneciton { get//get 关键字在属性或索引器中定义访问器方法,以检索该属性或该索引器元素的值。 { string temp_connectionstring = @"Data Source=./SQLEXPRESS;AttachDbFilename=E:/Asp.net/Extjs、ASP.net前后台数据交互/Extjs、ASP.net前后台数据交互/App_Data/db_test.mdf;Integrated Security=True;User Instance=True"; if (connection == null) { connection = new SqlConnection(temp_connectionstring); connection.Open(); } //System.Data.ConnectionState描述与数据源的连接的当前状态。 //Broken 与数据源的连接中断。只有在连接打开之后才可能发生这种情况。可以关闭处于这种状态的连接,然后重新打开。(该值是为此产品的未来版本保留的。) //Closed 连接处于关闭状态。 //Connecting 连接对象正在与数据源连接。(该值是为此产品的未来版本保留的。) //Executing 连接对象正在执行命令。(该值是为此产品的未来版本保留的。) //Fetching 连接对象正在检索数据。(该值是为此产品的未来版本保留的。) //Open 连接处于打开状态。 else if (connection.State == System.Data.ConnectionState.Closed) { connection.Open(); } else if (connection.State == System.Data.ConnectionState.Broken) { connection.Close(); connection.Open(); } return connection; } }//ExecuteNonQuery,对连接执行 Transact-SQL 语句并返回受影响的行数。 public static int ExecuteCommand(string temp_sql) { SqlCommand temp_cmd = new SqlCommand(temp_sql, Conneciton); int temp_result = temp_cmd.ExecuteNonQuery(); return temp_result; }//执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。 public static int GetScalar(string temp_sql) { SqlCommand temp_cmd = new SqlCommand(temp_sql, Conneciton); int temp_result = Convert.ToInt32(temp_cmd.ExecuteScalar()); return temp_result; }//提供一种从 SQL Server 数据库读取行的只进流的方式。 public static SqlDataReader GetReader(string temp_sql) { SqlCommand temp_cmd = new SqlCommand(temp_sql, Conneciton); SqlDataReader temp_reader = temp_cmd.ExecuteReader(); return temp_reader; }//获取表的记录集 public static DataTable GetDataSet(string temp_sql) { DataSet temp_ds = new DataSet(); SqlCommand temp_cmd = new SqlCommand(temp_sql, Conneciton); SqlDataAdapter temp_da = new SqlDataAdapter(temp_cmd); temp_da.Fill(temp_ds); return temp_ds.Tables[0]; } }}
show_score_Service.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Model;//添加完程序引用集后,添加命名空间using System.Data.SqlClient;namespace Service{ public class show_score_Service { public List
6 建立show_grid.aspx,添加 服务库类Service和类模型Model 的引用和命名空间
show_grid.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Show_grid.aspx.cs" Inherits="ExtJs_vs2008_ASP.net数据交互.Show_grid" %>
show_grid.aspx.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Model;//添加命名空间using Service;using System.Data.SqlClient;using System.Web.Script.Serialization;//Json序列化using System.Text;namespace ExtJs_vs2008_ASP.net数据交互{ public partial class Show_grid : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string temp_json = ""; string temp_type = Request.QueryString["parm"].ToString(); if(temp_type=="List") { temp_json = doList(); Response.Write(temp_json); } } private string doList() { show_score_Service temp_ser = new show_score_Service(); List
7 需要引入的目录文件
a.需要分页,我习惯用PagingMemoryProxy.js(可从ExtJs文件夹内搜索得到)分页,引入解决方案中
b.将ExtJs文件引入解决方案中
c.编辑一个my_datagrid.js文件
Ext.onReady(function() { store = new Ext.data.JsonStore({ data: [], fields: [ { name: 'use_id' }, { name: 'use_name' }, { name: 'use_sex' }, { name: 'use_address' }, { name: 'sco_subject' }, { name: 'sco_score' } ] }); Ext.Ajax.request({ //读取后台传递于前台数据 url: 'Show_grid.aspx?parm=List', method: 'get', success: function(response, opts) { var obj = Ext.decode(response.responseText); //obj 储存响应的数据 store.proxy = new Ext.data.PagingMemoryProxy(obj), //PagingMemoryProxy() 一次性读取数据 store.load({ params: { start: 0, limit: 4} }); //按4 条记录分布 }, failure: function() { Ext.Msg.alert("failure"); } });var grid = new Ext.grid.GridPanel({ frame: true, title:'学生各科成绩表', stripeRows: true, //斑马线 store: store, id: 'grid', applyTo: 'grid', trackMouseOver: true, height: 300, width:500, loadMask: {msg:'正在加载数据,请稍侯……'}, viewConfig: { forceFit: true }, columns: [ new Ext.grid.RowNumberer(), //行号 {header: '用户帐户', dataIndex: 'use_id', sortable: true }, { header: '用户姓名', dataIndex: 'use_name', sortable: true }, { header: '用户性别', dataIndex: 'use_sex', sortable: true }, { header: '用户地址', dataIndex: 'use_address', sortable: true }, { header: '考试科目', dataIndex: 'sco_subject', sortable: true }, { header: '考试分数', dataIndex: 'sco_score', sortable: true } ], bbar: new Ext.PagingToolbar({//分页 pageSize:4, store: store, displayInfo: true, //非要为true,不然不会显示下面的分页按钮 displayMsg: '第 {0} 条到 {1} 条,一共 {2} 条记录', emptyMsg: "没有记录" }) })})
8 前台Default.aspx的编写
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Extjs_ASP.net前后台数据交互._Default" %>
===========================================================================
===========================================================================
10 总结
a.构造出要显示的类模型
b.添加引用、命名空间、库类
学习上一些类使用的中文帮助:http://msdn.microsoft.com/zh-cn/library
英文:http://msdn.microsoft.com/en-us/library
c.List的泛型类
表示可通过索引访问的对象的强类型列表。提供用于对列表进行搜索、排序和操作的方法。
命名空间:System.Collections.Generic
程序集:mscorlib(在 mscorlib.dll 中)
[SerializableAttribute] public class List
d.JavaScriptSerializer类
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据。您无法访问序列化程序的此实例。但是,此类公开了公共 API。因此,当您希望在托管代码中使用 JavaScript 对象符号 (JSON) 时可以使用此类。
11 备注
读者看后可能会觉得我写得复杂了一些,实际操作的话,可以化简很多。主要还是阐述了以下图的道理
主要代码2段片段:
代码
using (SqlDataReader temp_reader = DBHelper.GetReader(temp_sql)) { List
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/sophiasy/archive/2010/11/12/6005557.aspx