關于VS2005中GridView的自定義分頁,單選、多選、排序、自增列的簡單應用。
??? 多選時,只有全部選中時“多選”才選中。
????圖片效果:

???? 簡單示例,代碼如下,
???
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="<input?type='checkbox'?id='chk'?name='chk'?onclick='checkJs(this.checked);'??/>全選"?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


?
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1312814