关于GridView中自定义分页、单选、多选、排序、自增列的简单应用

来源:互联网 发布:mac上的u盘格式化 编辑:程序博客网 时间:2024/04/27 23:18

 

简单示例,代码如下, 
fenpage.aspx的代码:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="fenpage.aspx.cs" Inherits="gridview_fenpage" %> 

<!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></title> 

<script language="javascript" type="text/javascript"> 
// 判断多选是否与选中项(没有选中的返回false) 
function slcNo_click() 

if (document.form1.checkboxname.length) 

for (var i=0;i<document.form1.checkboxname.length;i++

if(document.form1.checkboxname[i].checked

return true
}
 
}
 
}
 
else 

if(document.form1.checkboxname.checked

return true
}
 
}
 
alert(
"请选择后再操作!"); 
return false
}
 

// 鼠标经过改变行的颜色 
if (!objbeforeItem) 

var objbeforeItem
=null
var objbeforeItembackgroundColor
=null
}
 
function ItemOver(obj) 

if(objbeforeItem) 

objbeforeItem.style.backgroundColor 
= objbeforeItembackgroundColor; 
}
 
objbeforeItembackgroundColor 
= obj.style.backgroundColor; 
objbeforeItem 
= obj; 
obj.style.backgroundColor 
= "#B9D1F3"
}
 
// 

// 多选的全选与取消 
function checkJs(boolvalue) 

if(document.all.checkboxname.length>1

for(var i=0;i<document.all.checkboxname.length;i++

document.all.checkboxname[i].
checked = boolvalue; 
}
 
}
 
else 
document.all.checkboxname.
checked = boolvalue; 
}
 
// 

// 只有全部选中时“全选”选中 
function SingleCheckJs() 

var flag1
=false
var flag2
=false

if (document.form1.checkboxname.length) 

for (var i=0;i<document.form1.checkboxname.length;i++

if(document.form1.checkboxname[i].checked
flag1 
= true
else 
flag2 
= true
}
 
}
 
else 

if(document.form1.checkboxname.checked
flag1 
= true
else 
flag2 
= true
}
 

if(flag1==true&&flag2==false
document.getElementById(
"chk").checked = true
else 
document.getElementById(
"chk").checked = false
}
 
// 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<table cellpadding="0" cellspacing="0" border="0" width="80%" style="font-size: 11px"> 
<tr> 
<td align="center"> 
<asp:GridView ID="GridView1" runat="server" Width="100%" CellPadding="4" ForeColor="#333333" 
AutoGenerateColumns
="False" AllowPaging="True" PageSize="12" BorderColor="Silver" 
BorderStyle
="Solid" BorderWidth="1px" OnRowDataBound="GridView1_RowDataBound" 
ShowFooter
="True" EmptyDataText="没有数据记录!!" AllowSorting="True" OnSorting="GridView1_Sorting"> 
<Columns> 
<asp:BoundField HeaderText="编号" DataField="id" Visible="False" /> 
<asp:TemplateField HeaderText="&lt;input type='checkbox' id='chk' name='chk' onclick='checkJs(this.checked);' /&gt;全选" FooterText="全选"> 
<ItemTemplate> 
<input type="checkbox" id="checkboxname" name="checkboxname" value='<%# DataBinder.Eval(Container.DataItem, "id")%>' onclick='SingleCheckJs();' /> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="单选" FooterText="单选"> 
<ItemTemplate> 
<input type="radio" id="RadioName" name="RadioName" value='<%# Eval("id")%>' /> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="自增列" FooterText="自增列"> 
<ItemTemplate> 
<%# (Container.DataItemIndex+1).ToString()%> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:BoundField HeaderText="姓名" FooterText="姓名" DataField="name" SortExpression="name" /> 
<asp:BoundField HeaderText="身份证号" FooterText="身份证号" DataField="card" SortExpression="card" /> 
<asp:BoundField HeaderText="价格" FooterText="价格" DataField="price" DataFormatString="{0:¥#,##0.00}" 
HtmlEncode
="False" SortExpression="price" /> 
<asp:BoundField HeaderText="数字" FooterText="数字" DataField="price" DataFormatString="{0:0.00}" 
HtmlEncode
="False" SortExpression="price" /> 
<asp:BoundField HeaderText="建立时间" FooterText="建立时间" DataField="createdate" DataFormatString="{0:yyyy年MM月dd日 hh时mm分ss秒}" 
HtmlEncode
="False" SortExpression="createdate" /> 
</Columns> 
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
<EditRowStyle BackColor="#999999" /> 
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
<AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
<PagerSettings Visible="False" /> 
<FooterStyle Font-Bold="True" /> 
<HeaderStyle Font-Bold="False" Font-Italic="False" /> 
</asp:GridView> 
</td> 
</tr> 
<tr> 
<td align="center" style="height: 25px"> 
<asp:LinkButton ID="btnFirst" CommandArgument="first" OnClick="PagerButtonClick" 
runat
="server">首 页</asp:LinkButton> 
<asp:LinkButton ID="btnPrev" CommandArgument="prev" OnClick="PagerButtonClick" runat="server">上一页</asp:LinkButton> 
<asp:LinkButton ID="btnNext" CommandArgument="next" OnClick="PagerButtonClick" runat="server">下一页</asp:LinkButton> 
<asp:LinkButton ID="btnLast" CommandArgument="last" OnClick="PagerButtonClick" runat="server">尾 页</asp:LinkButton> 
<asp:Label ID="LblCurrentIndex" runat="server"></asp:Label> 
<asp:Label ID="LblPageCount" runat="server"></asp:Label> 
<asp:Label ID="LblRecordCount" runat="server"></asp:Label></td> 
</tr> 
<tr> 
<td> 
<asp:Button ID="Button2" runat="server" Text="checkbox得到选择的行" OnClick="Button2_Click"> 
</asp:Button> 
<asp:Button ID="Button1" runat="server" Text="radio得到选择的行" OnClick="Button1_Click"></asp:Button> 
</td> 
</tr> 
</table> 
</div> 
</form> 
</body> 
</html>

fenpage.aspx.cs的代码:

 

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; 
using System.Data.SqlClient; 

public partial class gridview_fenpage : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 

Button2.Attributes[
"onclick"= "return slcNo_click();"
GridViewBind(
""); 
}
 

private void GridViewBind(string Sqlsort) 

string connStr = ConfigurationManager.ConnectionStrings["ConnString1"].ConnectionString; 
string SqlStr = "SELECT * FROM test01 where id<1000" + Sqlsort; 
DataSet ds 
= new DataSet(); 

try 

SqlConnection conn 
= new SqlConnection(connStr); 
if (conn.State.ToString() == "Closed") conn.Open(); 

SqlDataAdapter da 
= new SqlDataAdapter(SqlStr, conn); 
da.Fill(ds, 
"test01"); 
if (conn.State.ToString() == "Open") conn.Close(); 

GridView1.DataSource 
= ds.Tables[0].DefaultView; 
GridView1.DataBind(); 

LblCurrentIndex.Text 
= "第 " + (GridView1.PageIndex + 1).ToString() + " 页"
LblPageCount.Text 
= "共 " + GridView1 .PageCount.ToString()+ " 页"
LblRecordCount.Text 
= "总共 "+ds.Tables[0].Rows.Count.ToString()+" 条"
if (ds.Tables[0].Rows.Count == 0

btnFirst.Visible 
= false
btnPrev.Visible 
= false
btnNext.Visible 
= false
btnLast.Visible 
= false

LblCurrentIndex.Visible 
= false
LblPageCount.Visible 
= false
LblRecordCount.Visible 
= false
}
 
else if (GridView1.PageCount == 1

btnFirst.Visible 
= false
btnPrev.Visible 
= false
btnNext.Visible 
= false
btnLast.Visible 
= false
}
 

// 计算生成分页页码,分别为:"首 页" "上一页" "下一页" "尾 页" 
btnFirst.CommandName = "1"
btnPrev.CommandName 
= (GridView1.PageIndex == 0 ? "1" : GridView1.PageIndex.ToString()); 

btnNext.CommandName 
= (GridView1.PageCount == 1 ? GridView1.PageCount.ToString() : (GridView1.PageIndex + 2).ToString()); 
btnLast.CommandName 
= GridView1.PageCount.ToString(); 
// 
}
 
catch(Exception ex) 

Response.Write(
"数据库错误,错误原因:"+ex.Message); 
Response.End(); 
}
 
}
 
protected void PagerButtonClick(object sender, EventArgs e) 

GridView1.PageIndex 
= Convert.ToInt32(((LinkButton)sender).CommandName)-1
GridViewBind(
""); 
}
 

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 

e.Row.Attributes[
"onmouseover"= "ItemOver(this)"
}
 

protected void Button2_Click(object sender, EventArgs e) 

string str=""
string []ckb=null

str
=Request.Form.Get("checkboxname"); 
ckb
=str.Split(new char[]{','}); 

Response.Write(
"直接在页面中得到的值为:"+str+"<br>"); 

Response.Write(
"处理后存放在数组中,如下:<br>"); 
for(int i=0;i<ckb.Length;i++

Response.Write(
"ckb["+i+"]的值为:"+ckb[i]+"<br>"); 
}
 
}
 
protected void Button1_Click(object sender, EventArgs e) 

Response.Write(Request.Form.Get(
"RadioName")); 
}
 
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 

string sql = ""

if (ViewState["SortDirection"== null || ViewState["SortDirection"].ToString().CompareTo(""== 0

ViewState[
"SortDirection"= " desc"
}
 
else 
ViewState[
"SortDirection"= ""

sql 
= " order by " + e.SortExpression + ViewState["SortDirection"]; 

GridViewBind(sql); 
}
 
}

 

数据库中表的生成代码: 
CREATE TABLE [dbo].[test01] ( 
[id] [decimal](18, 0) IDENTITY (1, 1) NOT NULL , 
[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , 
[card] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL , 
[createdate] [datetime] NULL 
) ON [PRIMARY] 
GO 

ALTER TABLE [dbo].[test01] ADD 
CONSTRAINT [DF_test01_createdate] DEFAULT (getdate()) FOR [createdate], 
CONSTRAINT [PK_test01] PRIMARY KEY CLUSTERED 

[id] 
) ON [PRIMARY] 

GO