asp.net Ext grid 顯示列表
更新時間:2009年08月13日 12:37:00 作者:
asp.net Ext grid 顯示列表實現(xiàn)代碼。
前臺頁面:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="gridShowTest.aspx.cs" Inherits="ExtPra.gridShowTest" %>
<!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>顯示gird</title>
<link rel="Stylesheet" type="text/css" href="ExtJS/resources/css/ext-all.css" />
<script type="text/javascript" src="ExtJS/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ExtJS/ext-all.js"></script>
<script type="text/javascript" src="ExtJS/build/locale/ext-lang-zh_CN.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<script type="text/javascript">
function ready()
{
Ext.BLANK_IMAGE_URL="ExtJS/docs/resources/s.gif"; //空白圖片設(shè)置為本地,否則按默認(rèn)方式從官方網(wǎng)站下載(在聯(lián)網(wǎng)環(huán)境下)
var url="myGridJson.aspx?Param=select";
var sm=new Ext.grid.CheckboxSelectionModel();//復(fù)選按鈕
var cm=new Ext.grid.ColumnModel //列模版定義(該例中定義顯示數(shù)據(jù)庫表Employees中的四列)
([
sm,//在每行的第一列添加一個復(fù)選按鈕 ,
new Ext.grid.RowNumberer({header:"自動顯示行號",width:100}),//添加自動顯示行號的列
{header:'員工編號',dataIndex:'EmployeeID',sortable:true, width:100},
{header:'名字',dataIndex:'LastName',sortable:true,width:100,editor:new Ext.form.TextField()},
{header:'姓氏',dataIndex:'FirstName',sortable:true,width:100,editor:new Ext.form.TextField()},
{header:'出生日期',dataIndex:'BirthDate',sortable:true,width:100,renderer:Ext.util.Format.dateRenderer('Y年m月d日')} //,renderer:Ext.util.Format.dateRenderer('Y年m月d日')
]);
// cm.defaultSortable=true; //設(shè)置所有列是可以排序的
var fields= //字段
[
{name:"EmployeeID",mapping: 'EmployeeID'},
{name:"LastName",mapping: 'LastName'},
{name:"FirstName",mapping:'FirstName'},
{name:"BirthDate",mapping:'BirthDate',type:'date'}
];
//store 是Ext中數(shù)據(jù)存儲的和數(shù)據(jù)交換的緩沖區(qū) 在grid等控件中要使用store作為填充的數(shù)據(jù)源
var store=new Ext.data.Store //JsonReader支持分頁 totalProperty獲得記錄的總數(shù) ,root是從服務(wù)器返回的json串
({
proxy:new Ext.data.HttpProxy({url:url}),//proxy告訴我們從哪里獲取數(shù)據(jù)
reader:new Ext.data.JsonReader //reader 告訴我們?nèi)绾谓馕鰯?shù)據(jù)
({
totalProperty:"totalCount",root:"root",//totalCount
fields:fields //fields 告訴我們按照定義的規(guī)范進行解析 每行讀取4個數(shù)據(jù),第一個是EmployeeID 第二個是LastName ...
}) //與ColumnModel中的dataIndex想對應(yīng),這樣ColumnModel就知道那列應(yīng)該顯示那條數(shù)據(jù)了
// remoteSort:true //支持服務(wù)器端排序 設(shè)置 store.remoteSort = true ,會向后臺提交兩個參數(shù) sort ,dir,sort排序字段 dir升序或降序
}); //此時不支持前臺排序,否則只是前臺排序
store.load({params:{start:0,limit:3}}); //對數(shù)據(jù)進行初始化 start表示起始頁 limit表示每頁大小,最好與分頁toolbar中的pageSize一致
var pagingBar=new Ext.PagingToolbar //分頁toolbar
({
displayInfo:true,
emptyMsg:"沒有數(shù)據(jù)顯示",
displayMsg:"顯示從{0}條數(shù)據(jù)到{1}條數(shù)據(jù),共{2}條數(shù)據(jù)",
store:store,
pageSize:3 //客戶端的模擬分頁 可以再分頁欄中看到根據(jù)該pageSize和總記錄數(shù)(pageCount)計算得到的頁數(shù) pageCount/pageSize
});
var grid=new Ext.grid.GridPanel
({
// el:"testGrid",
id:"MenuGrid",
title:"顯示列表",
// autoWidth:true,
autoHeight:true,
width:550,
//height:300, //千萬別忘了設(shè)置height,否則默認(rèn)的height的值是0,顯示不了讀取的數(shù)據(jù)
renderTo:document.body,
layout:"fit",
frame:true,
border:true,
// autoScroll:true,
sm:sm, //GridPanel中的復(fù)選按鈕,可以全選所有的行,若沒有設(shè)置該屬性,則GridPanel得全選功能不能實現(xiàn)
cm:cm,
store:store,
// viewConfig:{forceFit: true},設(shè)置該屬性為true則grid中的列寬設(shè)置無效,grid會根據(jù)這些數(shù)值計算出比例,對各列分配寬度
bbar:pagingBar
});
grid.addListener('sortchange', sortchangeFn); //給grid增加一個'sortchange'事件,當(dāng)發(fā)生排序改變的事件,啟動服務(wù)器端排序(即remoteSort:true)
//和重新加載數(shù)據(jù)( 即store.reload({params:{start:0,limit:3}}) )
function sortchangeFn(grid, sortinfo)
{
//alert('排序'+ sortinfo.field + "方向" + sortinfo.direction);
remoteSort:true
store.reload({params:{start:0,limit:3}}); //每次store.reload的時候,向后臺傳遞sort ,dir dir每點擊一次就會自動做相應(yīng)的改變從desc->asc,asc->desc
}
}
Ext.onReady(ready);
</script>
<div id="testGrid">
</div>
</div>
</form>
</body>
</html>
后臺代碼:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace ExtPra
{
public partial class myGridJson : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
#region 分頁
int pagesize = 20;
int start = 1;
string field, asc_desc;
if (string.IsNullOrEmpty(Request["sort"]))
{
field = "EmployeeID";
asc_desc = "asc";
}
else
{
field = Request["sort"];
asc_desc = Request["dir"];
}
if (!string.IsNullOrEmpty(Request["limit"]))
{
pagesize = int.Parse(Request["limit"]);
start = int.Parse(Request["start"]);
}
start = start / pagesize;
start += 1;
#endregion
string strSql = string.Format("select EmployeeID, LastName,FirstName,BirthDate from Employees where EmployeeID between ({0}-1)*{1}+1 and {0}*{1} order by {2} {3} ",start,pagesize,field,asc_desc);
string strConnection = "Data Source=.;Initial Catalog=Northwind;User ID=sa;password=sa";
SqlConnection con = new SqlConnection(strConnection);
SqlDataAdapter da = new SqlDataAdapter(strSql, con);
DataSet ds = new DataSet();
da.Fill(ds, "Employees");
string json = "";
IList<Hashtable> mList = new List<Hashtable>();
try
{
foreach (DataRow row in ds.Tables[0].Rows)
{
Hashtable ht = new Hashtable();
foreach (DataColumn col in ds.Tables[0].Columns)
{
ht.Add(col.ColumnName, row[col.ColumnName]);
}
mList.Add(ht);
}
json = JavaScriptConvert.SerializeObject(mList);
}
catch (Exception ee)
{
string error = ee.Message;
}
// int count = ds.Tables[0].Rows.Count;
int count = 9;
json = "{totalCount:" + count + ",root:" + json + "}";
Response.Write(json);
Response.End();
}
}
}
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="gridShowTest.aspx.cs" Inherits="ExtPra.gridShowTest" %>
<!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>顯示gird</title>
<link rel="Stylesheet" type="text/css" href="ExtJS/resources/css/ext-all.css" />
<script type="text/javascript" src="ExtJS/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ExtJS/ext-all.js"></script>
<script type="text/javascript" src="ExtJS/build/locale/ext-lang-zh_CN.js"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<script type="text/javascript">
function ready()
{
Ext.BLANK_IMAGE_URL="ExtJS/docs/resources/s.gif"; //空白圖片設(shè)置為本地,否則按默認(rèn)方式從官方網(wǎng)站下載(在聯(lián)網(wǎng)環(huán)境下)
var url="myGridJson.aspx?Param=select";
var sm=new Ext.grid.CheckboxSelectionModel();//復(fù)選按鈕
var cm=new Ext.grid.ColumnModel //列模版定義(該例中定義顯示數(shù)據(jù)庫表Employees中的四列)
([
sm,//在每行的第一列添加一個復(fù)選按鈕 ,
new Ext.grid.RowNumberer({header:"自動顯示行號",width:100}),//添加自動顯示行號的列
{header:'員工編號',dataIndex:'EmployeeID',sortable:true, width:100},
{header:'名字',dataIndex:'LastName',sortable:true,width:100,editor:new Ext.form.TextField()},
{header:'姓氏',dataIndex:'FirstName',sortable:true,width:100,editor:new Ext.form.TextField()},
{header:'出生日期',dataIndex:'BirthDate',sortable:true,width:100,renderer:Ext.util.Format.dateRenderer('Y年m月d日')} //,renderer:Ext.util.Format.dateRenderer('Y年m月d日')
]);
// cm.defaultSortable=true; //設(shè)置所有列是可以排序的
var fields= //字段
[
{name:"EmployeeID",mapping: 'EmployeeID'},
{name:"LastName",mapping: 'LastName'},
{name:"FirstName",mapping:'FirstName'},
{name:"BirthDate",mapping:'BirthDate',type:'date'}
];
//store 是Ext中數(shù)據(jù)存儲的和數(shù)據(jù)交換的緩沖區(qū) 在grid等控件中要使用store作為填充的數(shù)據(jù)源
var store=new Ext.data.Store //JsonReader支持分頁 totalProperty獲得記錄的總數(shù) ,root是從服務(wù)器返回的json串
({
proxy:new Ext.data.HttpProxy({url:url}),//proxy告訴我們從哪里獲取數(shù)據(jù)
reader:new Ext.data.JsonReader //reader 告訴我們?nèi)绾谓馕鰯?shù)據(jù)
({
totalProperty:"totalCount",root:"root",//totalCount
fields:fields //fields 告訴我們按照定義的規(guī)范進行解析 每行讀取4個數(shù)據(jù),第一個是EmployeeID 第二個是LastName ...
}) //與ColumnModel中的dataIndex想對應(yīng),這樣ColumnModel就知道那列應(yīng)該顯示那條數(shù)據(jù)了
// remoteSort:true //支持服務(wù)器端排序 設(shè)置 store.remoteSort = true ,會向后臺提交兩個參數(shù) sort ,dir,sort排序字段 dir升序或降序
}); //此時不支持前臺排序,否則只是前臺排序
store.load({params:{start:0,limit:3}}); //對數(shù)據(jù)進行初始化 start表示起始頁 limit表示每頁大小,最好與分頁toolbar中的pageSize一致
var pagingBar=new Ext.PagingToolbar //分頁toolbar
({
displayInfo:true,
emptyMsg:"沒有數(shù)據(jù)顯示",
displayMsg:"顯示從{0}條數(shù)據(jù)到{1}條數(shù)據(jù),共{2}條數(shù)據(jù)",
store:store,
pageSize:3 //客戶端的模擬分頁 可以再分頁欄中看到根據(jù)該pageSize和總記錄數(shù)(pageCount)計算得到的頁數(shù) pageCount/pageSize
});
var grid=new Ext.grid.GridPanel
({
// el:"testGrid",
id:"MenuGrid",
title:"顯示列表",
// autoWidth:true,
autoHeight:true,
width:550,
//height:300, //千萬別忘了設(shè)置height,否則默認(rèn)的height的值是0,顯示不了讀取的數(shù)據(jù)
renderTo:document.body,
layout:"fit",
frame:true,
border:true,
// autoScroll:true,
sm:sm, //GridPanel中的復(fù)選按鈕,可以全選所有的行,若沒有設(shè)置該屬性,則GridPanel得全選功能不能實現(xiàn)
cm:cm,
store:store,
// viewConfig:{forceFit: true},設(shè)置該屬性為true則grid中的列寬設(shè)置無效,grid會根據(jù)這些數(shù)值計算出比例,對各列分配寬度
bbar:pagingBar
});
grid.addListener('sortchange', sortchangeFn); //給grid增加一個'sortchange'事件,當(dāng)發(fā)生排序改變的事件,啟動服務(wù)器端排序(即remoteSort:true)
//和重新加載數(shù)據(jù)( 即store.reload({params:{start:0,limit:3}}) )
function sortchangeFn(grid, sortinfo)
{
//alert('排序'+ sortinfo.field + "方向" + sortinfo.direction);
remoteSort:true
store.reload({params:{start:0,limit:3}}); //每次store.reload的時候,向后臺傳遞sort ,dir dir每點擊一次就會自動做相應(yīng)的改變從desc->asc,asc->desc
}
}
Ext.onReady(ready);
</script>
<div id="testGrid">
</div>
</div>
</form>
</body>
</html>
后臺代碼:
復(fù)制代碼 代碼如下:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Collections.Generic;
using Newtonsoft.Json;
namespace ExtPra
{
public partial class myGridJson : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
#region 分頁
int pagesize = 20;
int start = 1;
string field, asc_desc;
if (string.IsNullOrEmpty(Request["sort"]))
{
field = "EmployeeID";
asc_desc = "asc";
}
else
{
field = Request["sort"];
asc_desc = Request["dir"];
}
if (!string.IsNullOrEmpty(Request["limit"]))
{
pagesize = int.Parse(Request["limit"]);
start = int.Parse(Request["start"]);
}
start = start / pagesize;
start += 1;
#endregion
string strSql = string.Format("select EmployeeID, LastName,FirstName,BirthDate from Employees where EmployeeID between ({0}-1)*{1}+1 and {0}*{1} order by {2} {3} ",start,pagesize,field,asc_desc);
string strConnection = "Data Source=.;Initial Catalog=Northwind;User ID=sa;password=sa";
SqlConnection con = new SqlConnection(strConnection);
SqlDataAdapter da = new SqlDataAdapter(strSql, con);
DataSet ds = new DataSet();
da.Fill(ds, "Employees");
string json = "";
IList<Hashtable> mList = new List<Hashtable>();
try
{
foreach (DataRow row in ds.Tables[0].Rows)
{
Hashtable ht = new Hashtable();
foreach (DataColumn col in ds.Tables[0].Columns)
{
ht.Add(col.ColumnName, row[col.ColumnName]);
}
mList.Add(ht);
}
json = JavaScriptConvert.SerializeObject(mList);
}
catch (Exception ee)
{
string error = ee.Message;
}
// int count = ds.Tables[0].Rows.Count;
int count = 9;
json = "{totalCount:" + count + ",root:" + json + "}";
Response.Write(json);
Response.End();
}
}
}
您可能感興趣的文章:
- asp.net 自制的單選、多選列表實現(xiàn)代碼
- asp.net 下拉列表無級數(shù)據(jù)綁定實現(xiàn)代碼
- asp.net 新聞列表樣式代碼
- ASP.NET對無序列表批量操作的三種方法小結(jié)
- ASP.NET系統(tǒng)關(guān)鍵字及保留字列表整理
- ASP.NET C#生成下拉列表樹實現(xiàn)代碼
- ASP.NET中ListView(列表視圖)的使用前臺綁定附源碼
- asp.net TreeView與XML三步生成列表樹
- ASP.NET批量操作基于原生html標(biāo)簽的無序列表的三種方法
- asp.net新聞列表生成靜態(tài)頁之批量和單頁生成
- ASP.NET中BulletedList列表控件使用及詳解
相關(guān)文章
asp.net core3.1 引用的元包dll版本兼容性問題解決方案
這篇文章主要介紹了asp.net core 3.1 引用的元包dll版本兼容性問題解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03asp.net gridview的Rowcommand命令中獲取行索引的方法總結(jié)
asp.net gridview的Rowcommand命令中獲取行索引的方法總結(jié),需要的朋友可以參考下。2010-05-05.Net?Core跨平臺應(yīng)用開發(fā)串口篇HelloArm
這篇文章介紹了.Net?Core跨平臺應(yīng)用開發(fā)串口篇HelloArm,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01Asp.net 動態(tài)加載用戶自定義控件,并轉(zhuǎn)換成HTML代碼
Ajax現(xiàn)在已經(jīng)是相當(dāng)流行的技術(shù)了,Ajax不僅是想服務(wù)器端發(fā)送消息,更重要的是無刷新的重載頁面。2010-03-03.NET?Core部署為Windows服務(wù)的詳細(xì)步驟
這篇文章主要介紹了.NET?Core部署為Windows服務(wù),想要將.NET?Core部署為window服務(wù),項目中需要進行以下配置:項目中引入Microsoft.Extensions.Hosting.WindowsServices包,本文給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼
asp.net生成的viewstate垃圾信息超過了20K,如果頁面前二K不是內(nèi)容會被引擎處罰,所以我們需要清理下asp.net生成靜態(tài)后冗余代碼2012-10-10