dataGrid 中添加数据
原文:dataGrid 中添加数据文件代码:
test.aspx
===========================>
<%@ Page Language="C#" Debug="True"%>
<%@Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.SqlClient" %>
<script language="C#" runat="server">
const string DataTableName="Employees";
SqlConnection conn;
SqlDataAdapter adapter;
void Page_Load(Object src, EventArgs e)
{
conn=new SqlConnection("server=(local);database=pubs;uid=sa;pwd=");
adapter=new SqlDataAdapter("select * from employees",conn);
if(!Page.IsPostBack){
BindData();
}
}
//绑定数据
void BindData(){
//先从Session中获取DataTable
DataTable table=(DataTable)Session[DataTableName];
//若Session中的DataTable不存在,则从数据库获取数据
if(table==null){
table=new DataTable();
adapter.Fill(table);
//将DataTable保存到Session中
SaveTableToSession(table);
table.Columns["id"].AutoIncrement=true;
}
grid.DataSource=table;
grid.DataBind();
}
void ChangePage(object src,DataGridPageChangedEventArgs e){
grid.CurrentPageIndex=e.NewPageIndex;
BindData();
}
void UpdateDataTable(object src,EventArgs e){
try{
DataTable table=GetTableFromSession();
string name;
byte age;
string address;
CheckBox ckdel;
for(int i=0;i<grid.Items.Count;i++){
DataGridItem dgitem=grid.Items[i];
int empId=(int)grid.DataKeys[dgitem.ItemIndex];
ckdel=dgitem.FindControl("delckb") as CheckBox;
name=((TextBox)dgitem.Cells[0].Controls[1]).Text;
age=byte.Parse(((TextBox)dgitem.Cells[1].Controls[1]).Text);
address=((TextBox)dgitem.Cells[2].Controls[1]).Text;
UpdateEmployee(table,empId,name,age,address,ckdel.Checked);
}
SaveTableToSession(table);
cancelbtn.Enabled=true;
int rowcount=0;
foreach(DataRow row in table.Rows){
if(row.RowState!=DataRowState.Deleted)
rowcount++;
}
if(Math.Ceiling(rowcount/5.0)==grid.CurrentPageIndex&&grid.CurrentPageIndex>0)
grid.CurrentPageIndex-=1;
BindData();
msglbl.Text="更新数据表成功!";
}
catch(Exception ex){
msglbl.Text="更新数据表失败,出现意外错误:"+ex.Message;
}
}
void UpdateEmployee(DataTable table,int id,string name,byte age,string address,bool isDelete){
for(int i=0;i<table.Rows.Count;i++){
DataRow row=table.Rows[i];
//如果选中了删除复选框,就直接就该行数据删除,不用再更新,否则更新该行数据
if(row!=null&&row.RowState!=DataRowState.Deleted){
if((int)row["id"]==id){
if(!isDelete){
row["name"]=name;
row["age"]=age;
row["address"]=address;
}
else
row.Delete();
}
}
}
msglbl.Text="更新数据表成功!";
}
void UpdateDataBase(object src,EventArgs e){
try{
DataTable table=GetTableFromSession();
SqlCommandBuilder cmdbd=new SqlCommandBuilder(adapter);
adapter.Update(table);
msglbl.Text="更新数据源成功!";
cancelbtn.Enabled=false;
}
catch(Exception ex){
msglbl.Text="更新数据源失败,出现意外错误:"+ex.Message;
}
BindData();
}
void CancelUpdate(object src,EventArgs e){
DataTable table=GetTableFromSession();
table.RejectChanges();
grid.CurrentPageIndex=0;
BindData();
cancelbtn.Enabled=false;
}
void AddNewEmployee(object src,DataGridCommandEventArgs e){
if(e.CommandName=="Add"){
try{
DataTable table=GetTableFromSession();
string name=((TextBox)e.Item.FindControl("newname")).Text;
byte age=byte.Parse(((TextBox)e.Item.FindControl("newage")).Text);
string address=((TextBox)e.Item.FindControl("newaddress")).Text;
DataRow row=table.NewRow();
row["name"]=name;
row["age"]=age;
row["address"]=address;
table.Rows.Add(row);
SaveTableToSession(table);
//重新绑定数据
BindData();
msglbl.Text="添加新记录成功!";
cancelbtn.Enabled=true;
}
catch(Exception ex){
msglbl.Text="未能添加新记录,出现意外错误:"+ex.Message;
}
}
}
//将DataTable保存到session中
void SaveTableToSession(DataTable table){
Session[DataTableName]=table;
}
//从Session中获取DataTable
DataTable GetTableFromSession(){
DataTable table=(DataTable)Session[DataTableName];
if(table!=null){
return table;
}
else{
msglbl.Text="未能从Session中获取数据,可能Session已超时,请刷新或重新打开当前页面!";
return null;
}
}
</script>
<html>
<head>
<title> Webdiyer制造:)</title>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Webdiyer(http://www.webdiyer.com)">
</head>
<body>
<form runat="server">
<asp:DataGrid runat="server" id="grid" AutogenerateColumns=false DataKeyField="id" ShowFooter=true AllowPaging=true PageSize=5 OnPageIndexChanged="ChangePage" PagerStyle-Mode="numericpages" OnItemCommand="AddNewEmployee">
<Columns>
<asp:TemplateColumn HeaderText="姓名">
<ItemTemplate>
<asp:TextBox runat="server" id="name" Text='<%#DataBinder.Eval(Container.DataItem,"name")%>'/>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox runat="server" id="newname"/>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="年龄">
<ItemTemplate>
<asp:TextBox runat="server" id="age" Text='<%#DataBinder.Eval(Container.DataItem,"age")%>'/>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox runat="server" id="newage"/>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="住址">
<ItemTemplate>
<asp:TextBox runat="server" id="address" Text='<%#DataBinder.Eval(Container.DataItem,"address")%>'/>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox runat="server" id="newaddress"/>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="删除">
<ItemTemplate>
<asp:CheckBox runat="server" id="delckb"/>
</ItemTemplate>
<FooterTemplate>
<asp:Button runat="server" Text="添加" CommandName="Add"/>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
<asp:Label runat="server" EnableViewState="false" id="msglbl" ForeColor="red"/>
<div>
<asp:Button runat="server" id="updatebtn" Text="更新数据表" OnClick="UpdateDataTable"/>
<asp:Button runat="server" id="cancelbtn" Text="取消对数据表的更新" Enabled=false OnClick="CancelUpdate"/>
<asp:Button runat="server" id="updatedbtbn" Text="更新数据源" OnClick="UpdateDataBase"/>
</div>
<div>
说明:DataGrid中的数据类型都没有进行验证,如果输入错误的数据类型或空值可能会出错,实际应用中应该对用户输入的数据进行验证!
</div>
</form>
</body>
</html>
数据库中employees表结构:
CREATE TABLE employees (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[age] [tinyint] NOT NULL ,
[address] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE employees ADD
CONSTRAINT [PK_employees] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
Datagrid 链接数据库Access
原文:Datagrid 链接数据库Access<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script Language="c#" runat="server">
void Page_Load()
{
string strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
strConnection += @"Data Source=\genfs1www11etningxmlNorthwind.mdb";
string strSQL = "SELECT * FROM Employees ";
DataSet objDataSet = new DataSet();
OleDbConnection objConnection = new OleDbConnection(strConnection);
OleDbDataAdapter objAdapter = new OleDbDataAdapter(strSQL, objConnection);
objAdapter.Fill(objDataSet, "Employees");
DataView objDataView = new DataView(objDataSet.Tables["Employees"]);
dgNameList.DataSource=objDataView;
dgNameList.DataBind();
}
</script>
<html>
<body>
<h4><%=Request.QueryString["id"]%></h4>
<asp:datagrid id="dgNameList" runat="server"
BackColor="#ffffff"
CellPadding=2
CellSpacing="0"
ShowFooter="true"
Font-Name="???I"
Font-Size="10pt"
HeaderStyle-BackColor="#eeaadd"
EnableViewState="false"
AutoGenerateColumns="false"
AllowCustomPaging="false"
>
<HeaderStyle BackColor="#00eeaa"></HeaderStyle>
<FooterStyle BackColor="#aaaadd"></FooterStyle>
<PagerStyle Mode="NumericPages" HorizontalAlign="Right"></PagerStyle>
<SelectedItemStyle BackColor="blue"></SelectedItemStyle>
<ItemStyle BackColor="#ffffee"></ItemStyle>
<AlternatingItemStyle BackColor="#6699ff"></AlternatingItemStyle>
<Columns>
<asp:HyperLinkColumn
HeaderText="Title"
DataNavigateUrlField="Title"
DataNavigateUrlFormatString="datareadasp.aspx?id={0}"
DataTextField="Title"
DataTextFormatString="{0:c}"
/>
</Columns>
</ASP:DataGrid>
</body>
</html>
datagrid编辑、修改、删除、翻页例子
原文:datagrid编辑、修改、删除、翻页例子现在数据库中建立test表,字段分别为ID、Code、Name;
数据库的链接这里就不具体写了,数据库的链接和操作请求我写在了AreaInfo.cs中,代码中会用到,这里声明一下
<%@ Page language="c#" Codebehind="Update.aspx.cs" AutoEventWireup="false" Inherits="Client.Page.AreaInfo.Update" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>test</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout" bgcolor="ivory">
<font face="arial" size="3"></font><FONT style="BACKGROUND-COLOR: #ffffff" face="Arial">
</FONT>
<br>
<form runat="server" ID="Form1">
<TABLE id="Table1" cellSpacing="0" bgcolor="#6699cc" cellPadding="1" width="300" border="1">
<TR>
<TD><b>test</b>
</TD>
</TR>
<TD>
<asp:DataGrid id="DG1" runat="server" BorderColor="green" Width="640" PageSize="5" AllowPaging="true"
OnPageIndexChanged="Page_Grid" BorderWidth="1" CellPadding="3" AutoGenerateColumns="false"
ShowHeader="true" Visible="true" OnEditCommand="People_Edit" OnCancelCommand="People_Cancel"
OnUpdateCommand="People_Update" OnDeleteCommand="People_Delete">
<HeaderStyle BorderColor="White" BackColor="black" ForeColor="White" Font-Bold="True" Font-Name="Arial"
Font-Size="9" HorizontalAlign="Center" />
<ItemStyle BorderColor="" BackColor="#FFFFF0" ForeColor="Black" Font-Name="Arial" Font-Size="8"
Font-Bold="False" HorizontalAlign="Center" />
<EditItemStyle BorderColor="" BackColor="#FFFFF0" ForeColor="Black" Font-Name="Arial" Font-Size="7"
Font-Bold="False" HorizontalAlign="Center" />
<PagerStyle Mode="NumericPages" Font-Size="8" />
<Columns>
<asp:BoundColumn HeaderText="ID" ReadOnly="true" DataField="ID" />
<asp:TemplateColumn>
<HeaderTemplate>
<b>代码</b>
</HeaderTemplate>
<ItemTemplate>
<asp:Label Text='<%# DataBinder.Eval(Container.DataItem, "Code").ToString().Trim() %>' runat="server" ID="Label1" NAME="Label1"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="Code" Text='<%# DataBinder.Eval(Container.DataItem, "Code").ToString().Trim() %>' runat="server" Width="100%"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<HeaderTemplate>
<b>名称</b>
</HeaderTemplate>
<ItemTemplate>
<asp:Label Width="200" Text='<%# DataBinder.Eval(Container.DataItem, "Name").ToString().Trim() %>' runat="server" ID="Label2" NAME="Label2"/>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="Name" Text='<%# DataBinder.Eval(Container.DataItem, "Name").ToString().Trim() %>' runat="server"/>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:EditCommandColumn ButtonType="PushButton" CancelText="取消" EditText="修改" UpdateText="更新" />
<asp:ButtonColumn Text="删除" CommandName="Delete" ButtonType="PushButton"></asp:ButtonColumn>
</Columns>
</asp:DataGrid></TD>
</TR>
</TABLE>
</form>
</body>
</HTML>
Update.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace Client.Page.AreaInfo
{
/// <summary>
/// Update 的摘要说明。
/// </summary>
public class Update : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DG1;
protected Classes.AreaInfo myClass=new Client.Classes.AreaInfo();
private void Page_Load(object sender, System.EventArgs e)
{
if(!this.IsPostBack)
{
this.DG1.DataSource=myClass.bindGrid();
this.DG1.DataBind();
}
// 在此处放置用户代码以初始化页面
}
public void Page_Grid(Object sender, DataGridPageChangedEventArgs e)
{
DG1.CurrentPageIndex = e.NewPageIndex;
DG1.DataSource =myClass.bindGrid();
DG1.DataBind();
}
public void DG1_Edit(Object sender, DataGridCommandEventArgs e)
{
DG1.EditItemIndex = e.Item.ItemIndex;
DG1.DataSource =myClass.bindGrid();
DG1.DataBind();
}
public void DG1_Cancel(Object sender, DataGridCommandEventArgs e)
{
DG1.EditItemIndex = -1;
DG1.DataSource = myClass.bindGrid();
DG1.DataBind();
}
public void DG1_Update(Object sender, DataGridCommandEventArgs e)
{
string code = ((TextBox)e.Item.Cells[1].Controls[1]).Text;
string name = ((TextBox)e.Item.Cells[2].Controls[1]).Text;
int id=int.Parse(e.Item.Cells[0].Text);
myClass.upDateArea(id,code,name);
DG1.EditItemIndex = -1;
DG1.DataSource = myClass.bindGrid();
DG1.DataBind();
}
public void DG1_Delete(Object sender, DataGridCommandEventArgs e)
{
int id=int.Parse(e.Item.Cells[0].Text);
myClass.deleteArea(id);
this.DG1.DataSource=myClass.bindGrid();
this.DG1.DataBind();
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
DataGrid常见解决方案(三)--在DataGrid中选择,确认,删除多行复选框列表
原文:DataGrid常见解决方案(三)--在DataGrid中选择,确认,删除多行复选框列表
|
DataGrid传统分页方式
原文:DataGrid传统分页方式此分页方式与传统ASP分页方式相仿.
DataGridPage.aspx
<%@ Page language="c#" Codebehind="DataGridPage.aspx.cs" AutoEventWireup="false" Inherits="netCRM.DataGridPage" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>DataGridPage</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClients cript" content="Javas cript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:datagrid id="DataGrid1" runat="server" AlternatingItemStyle-BackColor="#eeeeee" HeaderStyle-BackColor="#aaaadd"
Font-Size="8pt" Font-Name="Verdana" CellPadding="3" BorderWidth="1px" BorderColor="Black"
PagerStyle-HorizontalAlign="Right" PagerStyle-Mode="NumericPages"
PageSize="5" Font-Names="Verdana" Width="100%">
<AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>
<HeaderStyle BackColor="#AAAADD"></HeaderStyle>
<PagerStyle HorizontalAlign="Right" Mode="NumericPages"></PagerStyle>
</asp:datagrid>
</form>
<TABLE cellSpacing="0" cellPadding="1" width="100%" bgColor="#aaaadd" border="0">
<TBODY>
<TR>
<TD>
<TABLE cellSpacing="0" cellPadding="4" width="100%" bgColor="#fef8e2" border="0">
<TBODY>
<TR>
<TD class="M" noWrap align="center"><asp:Literal id="Literal1" runat="server"></asp:Literal></TD>
</TR>
<TR>
<TD class="C" noWrap align="center"><asp:Literal id="Literal2" runat="server"></asp:Literal></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>
</TBODY>
</TABLE>
</body>
</HTML>
DataGridPage.aspx.cs
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace netCRM
{
/// <summary>
/// DataGridPage 的摘要说明。
/// </summary>
public class DataGridPage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Literal Literal1;
protected System.Web.UI.WebControls.Literal Literal2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
string connstring = "Server=.;Database=NorthWind;User Id=sa;Password=;";
string sql="Select * from Orders";
SqlConnection conn = new SqlConnection(connstring);
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter sqlAdapter = new SqlDataAdapter(sql,conn);
sqlAdapter.Fill(ds,"users");
DataView dataview = new DataView();
dataview = ds.Tables[0].DefaultView;
DataGrid1.DataSource = ds.Tables[0].DefaultView;
DataGrid1.DataBind();
string cPage;
int pageSize = 10;
int currentPage;
int pageCount;
int numResults = 0;
if (Request.QueryString["page"]==null)
{
cPage="1";
}
else
{
cPage=Request.QueryString["page"].ToString();
}
try
{
currentPage = Int32.Parse(cPage);
}
catch
{
currentPage = 1;
}
numResults = 0;
int start = (int)((currentPage - 1) * pageSize);
int to = (int)(currentPage * pageSize);
if (start <= 0) start = 0;
numResults = dataview.Count;
int a1=0;
pageCount = Math.DivRem(numResults,pageSize,out a1);
if (a1>0)
{
pageCount++;
}
if(currentPage>pageCount || currentPage<=0)
{
currentPage = 1;
}
if(currentPage==pageCount)
{
to = dataview.Count;
}
// Create one DataTable with one column.
DataTable myTable = new DataTable("myTable");
myTable = dataview.Table.Clone();
//DataColumn colItem1 = new DataColumn("name",Type.GetType("System.String"));
//DataColumn colItem2 = new DataColumn("types",Type.GetType("System.String"));
//DataColumn colItem3 = new DataColumn("vendor",Type.GetType("System.String"));
//myTable.Columns.Add(colItem1);
//myTable.Columns.Add(colItem2);
//myTable.Columns.Add(colItem3);
//add row
DataRow NewRow;
for(int i=start;i<numResults;i++)
{
if(i<to)
{
NewRow = myTable.NewRow();
for(int k=0;k<dataview.Table.Columns.Count;k++)
{
NewRow[k] = dataview.Table.Rows[i][k];
}
myTable.Rows.Add(NewRow);
}
}
myTable.AcceptChanges();
DataView resultDataview = new DataView(myTable);
DataGrid1.DataSource = resultDataview;
DataGrid1.DataBind();
/// <summary>
/// 生成页导航条。
/// </summary>
string strNav = "";
int endpage;
if (currentPage>1)
{
strNav += "<a href='?page="+ (currentPage-1).ToString() +"'>上一页</a> ";
}
if (currentPage>11)
{
strNav += "<a href='?page=1'>1</a> ...";
}
if(pageCount>currentPage+10)
{
endpage = currentPage+10;
}
else
{
endpage = pageCount;
}
for (int i=currentPage-10;i<endpage+1;i++)
{
if(i>=1)
{
if (i==currentPage)
{
strNav +="<font color=#990000><strong>"+ i.ToString() +"</strong></font> ";
}
else
{
strNav += "<a href='?page="+ i.ToString() +"'>"+ i.ToString() +"</a> ";
}
}
}
if((currentPage+10)<pageCount)
{
strNav += "... <a href='?page="+ pageCount.ToString() +"'>"+ pageCount.ToString() +"</a>";
}
if(currentPage<pageCount)
{
strNav += " <a href='?page="+ (currentPage+1).ToString() +"'>下一页</a> ";
}
Literal1.Text = strNav;
Literal2.Text = "共 "+ numResults.ToString() +" 条供应信息,当前显示第 "+
(start+1).ToString() +" - "+ to.ToString() +" 条,共 "+ pageCount.ToString() +" 页";
}
#region Web 窗体设
DataGrid的客户端分页
原文:DataGrid的客户端分页
![]() |
datagrid分页《非控件版》
原文:datagrid分页《非控件版》首先对我之前的发表的那篇补充一下:当你在你的建立的工程中要用到我做的那个用户控件的话:声明 Protected DataGridPage1 As DataGridPage,前是你拖进来的控件名,后是你定义用户控件。然后在你代码中要用你的控件就写上:
DataGridPage1.SetTarget(MyDataGrid, New BindDataDelegate(AddressOf binddata))
DataGridPage1.SetStyle(10, False)
下划线部分是你自己写的一个绑定之类的涵数。SUB,FUNCTION 等。
以下是我不做成控件时的代码:
HTML:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="fenye.aspx.vb" Inherits="datagridtitle.fenye"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>fenye</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClients cript" content="Javas cript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="MS UI Gothic">
<asp:DataGrid id="MyDataGrid" style="Z-INDEX: 101; LEFT: 0px; POSITION: absolute; TOP: 112px"
runat="server" Width="744px" Height="224px" AllowPaging="True">
<PagerStyle Visible="False"></PagerStyle>
</asp:DataGrid>
<asp:LinkButton id="LinkButton1" style="Z-INDEX: 102; LEFT: 8px; POSITION: absolute; TOP: 96px"
runat="server" Width="48px" Height="8px">第一頁</asp:LinkButton>
<asp:LinkButton id="LinkButton2" style="Z-INDEX: 103; LEFT: 64px; POSITION: absolute; TOP: 96px"
runat="server" Width="56px">前一頁</asp:LinkButton>
<asp:LinkButton id="LinkButton3" style="Z-INDEX: 104; LEFT: 120px; POSITION: absolute; TOP: 96px"
runat="server" Width="48px">後一頁</asp:LinkButton>
<asp:LinkButton id="LinkButton4" style="Z-INDEX: 105; LEFT: 176px; POSITION: absolute; TOP: 96px"
runat="server" Width="80px">最後一頁</asp:LinkButton>
<asp:Label id="Label1" style="Z-INDEX: 106; LEFT: 552px; POSITION: absolute; TOP: 80px" runat="server"
Width="56px">跳轉到:</asp:Label>
<asp:TextBox id="txtGoPage" style="Z-INDEX: 107; LEFT: 624px; POSITION: absolute; TOP: 80px"
runat="server" Width="48px" Height="24px"></asp:TextBox>
<asp:Button id="btnGo" style="Z-INDEX: 108; LEFT: 680px; POSITION: absolute; TOP: 80px" runat="server"
Height="24px" Width="56px" Text="Button"></asp:Button>
<asp:Label id="lblCurrentIndex" style="Z-INDEX: 109; LEFT: 296px; POSITION: absolute; TOP: 88px"
runat="server" Height="24px" Width="120px">Label</asp:Label>
<asp:Label id="lblPageCount" style="Z-INDEX: 110; LEFT: 424px; POSITION: absolute; TOP: 88px"
runat="server" Width="112px">Label</asp:Label></FONT>
</form>
</body>
</HTML>
WEB代码:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化するユーザー コードをここに挿入します。
If Not IsPostBack Then
ViewState("strSort") = "orderid"
MyDataGrid.DataSource = GetDv(ViewState("strSort").ToString())
MyDataGrid.DataBind()
ShowStatsPage()
'Call orderbind()
End If
End Sub
Private Function GetDv(ByVal strSort As String) As DataView
Dim dv As DataView
Dim CN As New SqlConnection
Try
CN.ConnectionString = "data source=yangchangquan;initial catalog=Northwind;persist security info=False;user id=sa;Password=pass;"
CN.Open()
Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN)
Dim ds As New DataSet
adp.Fill(ds)
dv = ds.Tables(0).DefaultView
Catch ex As Exception
#If DEBUG Then
Session("Error") = ex.ToString()
Response.Redirect("../error.aspx")
#End If
Finally
'???接
CN.Close()
End Try
'排序
dv.Sort = strSort
Return dv
End Function
Private Sub MyDataGrid_SortCommand(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs)
MyDataGrid.CurrentPageIndex = 0
'得到排序的列
ViewState("strSort") = e.SortExpression.ToString()
MyDataGrid.DataSource = GetDv(ViewState("strSort").ToString())
MyDataGrid.DataBind()
ShowStatsPage()
End Sub
Private Sub btnGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGo.Click
Dim pageI As Integer
If (txtGoPage.Text <> "") Then
pageI = CInt(Trim(txtGoPage.Text)) - 1
If (pageI >= 0 And pageI < (MyDataGrid.PageCount)) Then
MyDataGrid.CurrentPageIndex = pageI
End If
End If
ViewState("strSort") = "orderid"
MyDataGrid.DataSource = GetDv(ViewState("strSort").ToString())
MyDataGrid.DataBind()
ShowStatsPage()
End Sub
Private Sub ShowStatsPage()
lblCurrentIndex.Text = "[<font color='blue'>當前頁為:" & (MyDataGrid.CurrentPageIndex + 1) & "頁</font>]"
lblPageCount.Text = "[<font color='blue'>共:" & MyDataGrid.PageCount & "頁</font>]"
End Sub
Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
MyDataGrid.CurrentPageIndex = 0
ViewState("strSort") = "orderid"
MyDataGrid.DataSource = GetDv(ViewState("strSort").ToString())
MyDataGrid.DataBind()
ShowStatsPage()
End Sub
Private Sub LinkButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton4.Click
MyDataGrid.CurrentPageIndex = (MyDataGrid.PageCount - 1)
ViewState("strSort") = "orderid"
MyDataGrid.DataSource = GetDv(ViewState("strSort").ToString())
MyDataGrid.DataBind()
ShowStatsPage()
End Sub
Private Sub LinkButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton2.Click
If (MyDataGrid.CurrentPageIndex > 0) Then
MyDataGrid.CurrentPageIndex = MyDataGrid.CurrentPageIndex - 1
ViewState("strSort") = "orderid"
MyDataGrid.DataSource = GetDv(ViewState("strSort").ToString())
MyDataGrid.DataBind()
ShowStatsPage()
End If
End Sub
Private Sub LinkButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton3.Click
If (MyDataGrid.CurrentPageIndex < (MyDataGrid.PageCount - 1)) Then
MyDataGrid.CurrentPageIndex = MyDataGrid.CurrentPageIndex + 1
ViewState("strSort") = "orderid"
MyDataGrid.DataSource = GetDv(ViewState("strSort").ToString())
MyDataGrid.DataBind()
ShowStatsPage()
End If
End Sub
完成;
datagrid技巧之一:代码控制选中行的颜色
原文:datagrid技巧之一:代码控制选中行的颜色大家都知道datagrid是一个使用频率很高的控件,在编写ASP.NET代码的时候,我们总希望能让用户选中指定的行以后,让那一行用不同的颜色显示,虽然datagrid样式也有这个功能,但是我们如何编写代码实现呢?
在本例子中,我们首先动态产生1000行,然后当用户选中datagrid中的某一行的时候,那一行就会变为蓝色。代码如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WebApplication_rd
{
/// <summary>
/// Demostrates how to have a datagrid server control be bookmarked
/// </summary>
public class datagrid : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DGProducts;
int bookmarkIndex = 0; // The index of the row that should be scrolled to
int itemCount = 0; // Counter for the amount of items on the page
bool bookMark = true; // Controls whether or not the page is bookmarked
#region DGProducts EventHandlers
private void DGProducts_ItemDataBound(object source, DataGridItemEventArgs e) {
if (bookMark) {
LiteralControl anchor = new LiteralControl();
anchor.Text = "<a name=\"" + itemCount.ToString() + "\">";
itemCount ++;
e.Item.Cells[0].Controls.Add(anchor);
}
}
private void DGProducts_ItemCommand(object source, DataGridCommandEventArgs e) {
if (e.CommandName == "Select") {
e.Item.BackColor = Color.Blue;
if (bookMark) {
bookmarkIndex = e.Item.ItemIndex;
this.Inserts criptBlock();
}
}
}
#endregion
#region EventHandlers
private void Page_Load(object sender, System.EventArgs e)
{
this.Bind();
}
#endregion
#region User Defined
private void Inserts criptBlock() {
System.Text.StringBuilder js cript = new System.Text.StringBuilder();
js cript.Append("<s cript language=\"Javas cript\">");
js cript.Append("location.href=\"#");
js cript.Append(this.bookmarkIndex.ToString());
js cript.Append("\";");
js cript.Append("</s cript>");
this.RegisterClients criptBlock("Bookmark", js cript.ToString());
}
private void Bind()
{
DGProducts.DataSource = this.CreateDataSource(1000);
DGProducts.DataBind();
}
private DataTable CreateDataSource(int count) {
DataTable table = new DataTable();
DataColumn column = null;
DataRow row = null;
// Create 5 columns
for (int iCol = 0; iCol < 5; iCol++) {
column = new DataColumn("Column: " + iCol.ToString(), typeof(string));
table.Columns.Add(column);
}
//Create Rows based on count variable
for (int iRows = 0; iRows < count; iRows ++) {
row = table.NewRow();
for (int iCol = 0; iCol < 5; iCol ++) {
row[iCol] = "Value: " + iCol.ToString();
}
table.Rows.Add(row);
}
return table;
}
#endregion
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.DGProducts.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DGProducts_ItemCommand);
this.DGProducts.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DGProducts_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}