asp.net Ext grid 顯示列表
<%@ 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ù)庫(kù)表Employees中的四列)
([
sm,//在每行的第一列添加一個(gè)復(fù)選按鈕 ,
new Ext.grid.RowNumberer({header:"自動(dòng)顯示行號(hào)",width:100}),//添加自動(dòng)顯示行號(hào)的列
{header:'員工編號(hào)',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ù)存儲(chǔ)的和數(shù)據(jù)交換的緩沖區(qū) 在grid等控件中要使用store作為填充的數(shù)據(jù)源
var store=new Ext.data.Store //JsonReader支持分頁(yè) 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ī)范進(jìn)行解析 每行讀取4個(gè)數(shù)據(jù),第一個(gè)是EmployeeID 第二個(gè)是LastName ...
}) //與ColumnModel中的dataIndex想對(duì)應(yīng),這樣ColumnModel就知道那列應(yīng)該顯示那條數(shù)據(jù)了
// remoteSort:true //支持服務(wù)器端排序 設(shè)置 store.remoteSort = true ,會(huì)向后臺(tái)提交兩個(gè)參數(shù) sort ,dir,sort排序字段 dir升序或降序
}); //此時(shí)不支持前臺(tái)排序,否則只是前臺(tái)排序
store.load({params:{start:0,limit:3}}); //對(duì)數(shù)據(jù)進(jìn)行初始化 start表示起始頁(yè) limit表示每頁(yè)大小,最好與分頁(yè)toolbar中的pageSize一致
var pagingBar=new Ext.PagingToolbar //分頁(yè)toolbar
({
displayInfo:true,
emptyMsg:"沒(méi)有數(shù)據(jù)顯示",
displayMsg:"顯示從{0}條數(shù)據(jù)到{1}條數(shù)據(jù),共{2}條數(shù)據(jù)",
store:store,
pageSize:3 //客戶(hù)端的模擬分頁(yè) 可以再分頁(yè)欄中看到根據(jù)該pageSize和總記錄數(shù)(pageCount)計(jì)算得到的頁(yè)數(shù) pageCount/pageSize
});
var grid=new Ext.grid.GridPanel
({
// el:"testGrid",
id:"MenuGrid",
title:"顯示列表",
// autoWidth:true,
autoHeight:true,
width:550,
//height:300, //千萬(wàn)別忘了設(shè)置height,否則默認(rèn)的height的值是0,顯示不了讀取的數(shù)據(jù)
renderTo:document.body,
layout:"fit",
frame:true,
border:true,
// autoScroll:true,
sm:sm, //GridPanel中的復(fù)選按鈕,可以全選所有的行,若沒(méi)有設(shè)置該屬性,則GridPanel得全選功能不能實(shí)現(xiàn)
cm:cm,
store:store,
// viewConfig:{forceFit: true},設(shè)置該屬性為true則grid中的列寬設(shè)置無(wú)效,grid會(huì)根據(jù)這些數(shù)值計(jì)算出比例,對(duì)各列分配寬度
bbar:pagingBar
});
grid.addListener('sortchange', sortchangeFn); //給grid增加一個(gè)'sortchange'事件,當(dāng)發(fā)生排序改變的事件,啟動(dòng)服務(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的時(shí)候,向后臺(tái)傳遞sort ,dir dir每點(diǎn)擊一次就會(huì)自動(dòng)做相應(yīng)的改變從desc->asc,asc->desc
}
}
Ext.onReady(ready);
</script>
<div id="testGrid">
</div>
</div>
</form>
</body>
</html>
后臺(tái)代碼:
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 分頁(yè)
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 自制的單選、多選列表實(shí)現(xiàn)代碼
- asp.net 下拉列表無(wú)級(jí)數(shù)據(jù)綁定實(shí)現(xiàn)代碼
- asp.net 新聞列表樣式代碼
- ASP.NET對(duì)無(wú)序列表批量操作的三種方法小結(jié)
- ASP.NET系統(tǒng)關(guān)鍵字及保留字列表整理
- ASP.NET C#生成下拉列表樹(shù)實(shí)現(xiàn)代碼
- ASP.NET中ListView(列表視圖)的使用前臺(tái)綁定附源碼
- asp.net TreeView與XML三步生成列表樹(shù)
- ASP.NET批量操作基于原生html標(biāo)簽的無(wú)序列表的三種方法
- asp.net新聞列表生成靜態(tài)頁(yè)之批量和單頁(yè)生成
- ASP.NET中BulletedList列表控件使用及詳解
相關(guān)文章
asp.net dataview做無(wú)限極分類(lèi)的又一用法
通??吹絼e人以及自己以前在綁定無(wú)限極分類(lèi)的時(shí)候,總是需要多次連接數(shù)據(jù)庫(kù),這樣覺(jué)得造成了資源的浪費(fèi),然后我想一次把所有數(shù)據(jù)先取出來(lái)(類(lèi)型不是很多的情況),這樣可以節(jié)省服務(wù)器的開(kāi)銷(xiāo)。2009-11-11linq 查詢(xún) Linq 高級(jí)查詢(xún)實(shí)例代碼
本文針對(duì)Linq 高級(jí)查詢(xún)實(shí)例進(jìn)行詳解,需要了解的朋友可以參考下2013-01-01讓VS2008對(duì)JQuery語(yǔ)法的智能感知更完美一點(diǎn)
上周Rich Strahl的POST中提到一個(gè)新發(fā)布的VS2008 hotfix修復(fù)了VS2008對(duì)Javascript智能感知的一些BUG,fixed之后可以讓VS2008對(duì)JQuery提供智能感知,讓我等JQuery fans欣喜了一陣子??勺屑?xì)一看,還需要另外給JQuery添加上XML comments才行 :( 喪氣了...2008-03-03asp.net core3.1 引用的元包dll版本兼容性問(wèn)題解決方案
這篇文章主要介紹了asp.net core 3.1 引用的元包dll版本兼容性問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03asp.net gridview的Rowcommand命令中獲取行索引的方法總結(jié)
asp.net gridview的Rowcommand命令中獲取行索引的方法總結(jié),需要的朋友可以參考下。2010-05-05.Net?Core跨平臺(tái)應(yīng)用開(kāi)發(fā)串口篇HelloArm
這篇文章介紹了.Net?Core跨平臺(tái)應(yīng)用開(kāi)發(fā)串口篇HelloArm,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01Asp.net 動(dòng)態(tài)加載用戶(hù)自定義控件,并轉(zhuǎn)換成HTML代碼
Ajax現(xiàn)在已經(jīng)是相當(dāng)流行的技術(shù)了,Ajax不僅是想服務(wù)器端發(fā)送消息,更重要的是無(wú)刷新的重載頁(yè)面。2010-03-03.NET?Core部署為Windows服務(wù)的詳細(xì)步驟
這篇文章主要介紹了.NET?Core部署為Windows服務(wù),想要將.NET?Core部署為window服務(wù),項(xiàng)目中需要進(jìn)行以下配置:項(xiàng)目中引入Microsoft.Extensions.Hosting.WindowsServices包,本文給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10asp.net生成靜態(tài)后冗余代碼,去掉viewstate生成的代碼
asp.net生成的viewstate垃圾信息超過(guò)了20K,如果頁(yè)面前二K不是內(nèi)容會(huì)被引擎處罰,所以我們需要清理下asp.net生成靜態(tài)后冗余代碼2012-10-10