GridView控件自定义分页详解
在这里我们将用一个隐藏字段来保存这个PageIndex,即当前页码.当点击上一页时,将它的值减一,知道为0,要注意的一点这里的第一页页码是0而不是1.下面看看代码,然后我们再分析分析!
1<asp:GridView ID="News Grid" runat="s erver" AutoGenerateColumns="False" AllowPaging="fals e"Wid th="100%">
2 <Columns>
3 <asp:BoundField DataField="News Id"HeaderText="新闻ID"/>
4 <asp:HyperLinkField DataNavigateUrlFields="NewsId"DataNavig ateUrlFormat String="~/Details.as px?ID={0}"
5 DataTextField="Title"HeaderText="新闻标题" ItemStyle-Width="70%"/>
6 <asp:BoundField DataField="PostTime"HeaderText="发布时间"/>
7 <asp:CommandField HeaderText=" 新 闻 管 理 " ShowCancelButton="False"Sh owDeleteButton="True"
8 ShowEditButton="True"/>
9 </Columns>
10 </as p:Grid View>
11 <div s tyle="height:16px;p adding-top:5px;margin-right:30px;flo at:right">
12 <asp:HiddenField ID="CurrentPage" runat="s erver"Value="0"/>
13 <asp:LinkButton ID="First" runat="server" CommandArgument="first"On Clic k="Pag erButto n_Clic k">首页</asp:LinkButt on>
14 <asp:LinkButton ID="Prev" runat="server" CommandArgument="prev"On Clic k="P a g e rButto n_Clic k">上一页</asp:Lin kBu tt on>
15 <asp:LinkButton ID="Next" runat="server" CommandArgument="next"On Clic k="P a g e rButto n_Clic k">下一页</asp:Lin kBu tt on>
16 <asp:LinkButton ID="Last" runat="server" CommandArgument="last"On Clic k="Pag erButto n_Clic k">尾页</asp:LinkButt on>
17 </div> CS文件中的代码:
1 protected void PagerButton_Click(object sender,EventArgs e)
2 {
3 int pageIndx=Convert.ToInt32(CurrentPage.Value);
4 int totals=NewsManager.GetNews(0,pageSize).TotalRecords;
5 int pages=(totals%pageSize)==0?(totals/pageSize) : (totals /pageSize+1);
6 string arg=((LinkButton)sender).CommandArgument.ToString().ToLower();
7 switch(arg)
8 {
9 case"prev":
10 if(pageIndx>0)
11 {
12 pageIndx-=1;
13 }
14 break;
15 case"next":
16 if(pageIndx<pages - 1)
17 {
18 pageIndx+=1;
19 }
20 break;
21 case"last":
22 pageIndx=pages - 1;
23 break;
24 default:
25 pageIndx=0;
26 break;
27 }
28 CurrentPage.Value=pageIndx.ToString();
29 NewsGrid.DataSource=NewsManager.GetNews(pageIndx,pageSize).Entities;
30 NewsGrid.DataBind();
31 }
如何在GridView中增加效果protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs e)
{
//将满足特定条件的行标为高亮if(e.Row.RowTyp e==DataContro lRowType.DataRow)//判定当前的行是否属于datarow类型的行
{int money=Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "MONEY"));//取当前行的列值if(money==77)e.Row.BackCo lor=Color.Red;
//string customer=(string)DataBinder.Eval(e.Row.DataItem, "CUSTOMER");string customer=DataBinder.Eval(e.Row.DataItem, "CUSTOMER").ToString();if(customer=="sdf")e.Row.BackCo lor=Co lor.Re d;
}
//加入鼠标滑过的高亮效果if(e.Row.RowTyp e==DataContro lRowType.DataRow)//判定当前的行是否属于datarow类型的行
{
//当鼠标放上去的时候先保存当前行的背景颜色并给附一颜色e.Ro w.Attributes.A dd("onmouseo ver","currentco lor=this.style.b ackgroundCo lor;this.s tyle.b ackgroundCo lor='y ellow',this.s tyle.fontWeight='';");
//当鼠标离开的时候将背景颜色还原的以前的颜色e.Row.Attributes.Add("onmouseout","this.style.b ackgroundCo lor=currentco lor,this.style.fontWeight='';");
}
//单击行改变行背景颜色if(e.Row.RowTyp e==DataContro lRowType.DataRow)
{
e.Row.Attributes.Add("onclick","this.style.b ackgroundCo lor='#99cc00';this.style.color='buttontext';this.style.cursor='default';");
}
如何在GridView中一次性批量更新多行数据
ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例
子
<asp:GridView ID="GridView1" runat="server"AutoGenerateColumns="Fals e"PageSize="10"
Width="542px"AllowPaging="True"AllowSorting="True"
DataKeyNames="DB31_1,DB31_2"
OnRowCanc eling Edit="Grid View 1_RowCanc elingEdit"OnRowDeleting="GridView 1_RowDeleting"OnRowEditing="GridView 1_RowEditing"OnRowUpdating="GridView 1_RowUp dating"
OnPageIndexChanging="GridView 1_PageIndexChanging"
OnRowDataBound="Grid View1_RowDataBound"
On Sele ctedIndexCh ang ed="GridView 1_Se le ctedIndexCh ange d"On So rting="Grid View 1_So rting">
<Columns>
<asp:TemplateField HeaderText="序号">
<It emT emp lat e>
<%#this.Grid View1.PageIndex*this.GridView1.PageSize+th is.Grid View 1.Ro ws.Co unt+1%>
</It emT emp lat e>
</a sp:T emp lateFie ld>
<asp:TemplateField HeaderText="学历代码"SortExpress ion="DB1_1">
<Ed itIt emT emp lat e>
<%--<asp:TextBox ID="TextBox1" runat="server"Text='<%#
Bind("DB1_1")%>'></asp:TextBox>--%>
<asp:DropDownLis t ID="ddlXL" runat="s erver" DataValueField='<%#
Bind("DB 1_1")%>'></asp:DropDownLis t>
</Ed itIt emT emp lat e>
<ItemTemp late>
<asp:Label ID="Label1" runat="server"Text='<%#
Bind("xu e liText")%>'></asp:Lab e l>
</It emT emp lat e>
</a sp:T emp lat eFie ld>
<asp:TemplateField HeaderText="学历名称"SortExpress ion="DB1_2">
<EditItemTemp late>
<asp:TextBox ID="TextBox2" runat="server"Text='<%#
Bind("DB1_2")%>'></asp:TextBox>
</Ed itIt emT emp lat e>
<It emT emp lat e>
<asp:Label ID="Label2" runat="server"Text='<%#
Bind("DB 1_2")%>'></asp:Lab el>
</It emT emp lat e>
</a sp:T emp lat e Fie ld>
<asp:TemplateField HeaderText="操作"ShowHeader="False">
<EditItemTemp late>
<asp:LinkButton ID="LinkButton 1" runat="s erver"Causes Validation="True"Co mmandName="Update"
Text="更新"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="s erver"Causes Validation="Fals e"Co mman dName="Canc e l"
Text="取消"></asp:LinkButton>
</EditItemTemp late>
<It emT emp lat e>
<asp:LinkButton ID="LinkButton 1" runat="s erver"CausesValidation="Fals e"Co mman dName="Edit"
Text="编辑"OnClientClick="return confirm('确认要编辑吗 ');"></as p:LinkButton><asp:LinkButton ID="LinkButton3" runat="s erver"Causes Validation="Fals e"Co mman dName="De lete"
Text="删除"OnClientClick="return confirm('确认要删除吗 ');"></as p:LinkButton><asp:LinkButton ID="LinkButton2" runat="s erver"Causes Validation="Fals e"Co mman dName="S e le ct"
Text="选择"></asp:LinkButton>
</It emT emp lat e>
</as p:Temp lateField>
</Columns>
<AlternatingRowStyle BackColor="Aquamarine" />
</a sp:Gr idView>
///<summary>
///绑定数据到Grid View
///</summary>private void GridViewBind()
{
检索数据库string strSql="SELECT*FROM DB1";
得到数据集
this.GridView 1.DataSource=conn.GetDs(strSql).Tab les[0].DefaultView;this.GridView 1.DataBind();
}
///<summary>
///编辑当前行
///</summary>
///<p aram name="s ender"></param>
///<p aram n ame="e"></p aram>protected void GridView1_RowEditing(object sender,GridViewEditEventArgs e)
{
Grid View 1.EditIndex=e.NewEditIndex;
//当前编辑行背景色高亮this.GridView 1.EditRowStyle.BackCo lor=Co lor.Fro mName("#F7CE90");
Grid ViewBind();
}
///<summary>
///取消编辑状态
///</summary>
///<p aram name="s ender"></param>
///<p aram n ame="e"></p aram>protected void GridView1_RowCancelingEdit(object s ender,GridView CancelEditEventArgs e){
GridView 1.EditIndex=-1;
Grid ViewBind();
}
///<summary>
///删除记录过程
///</summary>
///<p aram name="s ender"></param>
///<p aram n ame="e"></p aram>protected void GridView1_RowDeleting(object sender,GridViewDe leteEventArgs e){
//得到单位编号s tring rowToDelete=GridView1.DataKeys[e.RowIndex].Va lues[0].To String();
//转换为整数
//int ID=Convert.ToInt32(rowToDelete);
//从数据库中删除string str="DELETE FROM DB1 where DB1_1="+"'"+rowToDelete+"'"+"";try
{conn.RunSql(str);
//重新绑定数据
Grid ViewBind();
}catch(Exception ex)
{
Response.Write("数据库错误错误原因 "+ex.Message);
Response.End();
}
}
///<summary>
///更新记录过程
///</summary>
///<p aram name="s ender"></param>
///<p aram n ame="e"></p aram>protected void GridView1_RowUpdating(object sender,GridViewUpdateEventArgs e){string ID=Grid View1.DataKeys[e.RowIndex].Values[0].To String();string DB 1_1=((Te xtBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;//string DB1_2=((Te xtBox)GridView1.Rows[e.RowIndex].F indControl("TextBox2")).Text;string DB1_2=
(((Drop DownList))GridView 1.Rows[e.RowIndex].F indContro l("ddlXL")).Sele ctedItem.Text;//判断表单项是否有空并给出提示信息if(DB 1_1=="" | |DB 1_2=="")
{conn.Alert("请输入完整信息 ",Page);return;
}try
{conn.BuilderEdit("select*from DB 1 where DB 1_1='"+ID+"'");conn.dr["DB 1_1"]=DB 1_1;conn.dr["DB 1_2"]=DB 1_2;c o nn.Bu ild e rEd it Clo s e();
}catch(OracleException err)
{if(err.Code.To String()=="1")conn.Alert("错误 已存在具有相同主键的记录",Page);elseconn.Alert("错误未能添加记录",Page);
}
Response.Write("<script language='javascript'>alert('数据已被保存! ');</script>");
//返回浏览状态
GridView 1.EditIndex=-1;
Grid ViewBind();
}
///<summary>
///分页事件
///</summary>
///<p aram name="s ender"></param>
///<p aram n ame="e"></p aram>protected void GridView1_PageIndexChanging(object sender,GridViewPageEventArgs e)
{
Grid View 1.PageIndex=e.NewPageIndex;
Grid ViewBind();
}
///<summary>
///加入鼠标效果及为DropDownLis t绑定值
///</summary>
///<p aram name="s ender"></param>
///<p aram name="e"></p aram>protected void GridView1_RowDataBound(object sender,GridViewRowEventArgs e)
{
//为Drop DownLis t绑定值if(((Drop DownLis t)e.Row.FindContro l("ddlXL")) !=null)
{
DropDownList ddlXL=(DropDownList)e.Row.FindControl("ddlXL");d d lXL.It e ms.Cle ar();ddlXL.Items.Add(new ListItem("博士","1"));ddlXL.Items.Add(new ListItem("硕士","2"));ddlXL.Items.Add(new ListItem("学士","3"));
}
//加入鼠标滑过的高亮效果if(e.Row.RowType==DataControlRowType.DataRow)//判定当前的行是否属于datarow类型的行{
//当鼠标放上去的时候先保存当前行的背景颜色并给附一颜色e.Row.Attributes.Add("onmous eover",
"currentco lo r=th is.sty le.b ackgroundCo lo r;this.s ty le.b ackgroundCo lo r='y e llo w',th is.s tyle.fontWe ight='';");
//当鼠标离开的时候将背景颜色还原的以前的颜色e.Row.Attributes.Add("onmous eout",
"this.style.b ackgroundCo lor=currentco lor,this.s tyle.fontWeight='';");
}
//单击行改变行背景颜色
if(e.Row.RowType==DataControlRowType.DataRow)
{e.Ro w.Attributes.Add("o nc lick", "th is.sty le.b ackgroundCo lo r='#99c c 00';this.style.color='buttontext';this.style.cursor='default';");
}
}
ASP.NET2.0下含有CheckBo x的GridView删除选定记录实例<asp:GridView ID="GridView1" runat="server"AutoGenerateColumns="Fals e"PageSize="5"
2 Width="726px"AllowPaging="True"AllowSorting="True"
3 DataKeyNames="DB1_1,DB1_2" OnRowDeleting="GridView1_RowDeleting" OnPageIndexChanging="Grid View1_PageIndexChanging"OnRowDataBound="Grid View1_RowDataBound"On Sorting="Grid View 1_Sorting"Height="279p x">
4 <Co lu mn s>
5 <asp:TemplateField HeaderText="序号">
6 <It emT emp lat e>
7 <%#this.GridView 1.Pag eIndex*this.GridView 1.Pag e Size+th is.Grid View 1.Ro ws.Co unt+1%>
8 </It emT emp lat e>
9 </a sp:T emp lateFie ld>
10 <asp:TemplateField HeaderText="选择">
11 <It emT emp lat e>
12 <asp:CheckBox ID="chkSelect" runat="s erver"></asp:CheckBox>
13 </It emT emp lat e>
14 </a sp:Temp lateFie ld>
15 <as p:TemplateField HeaderText="操作"ShowHeader="False">
16 <It emT emp lat e>
17 <asp:LinkButton ID="lbtnDelete" runat="s erver"CausesValidation="Fals e"Co mman dName="De lete"
18 Text="删除"OnClientClick="return confirm('确认要删除吗
');"></asp:LinkButton>
19 </It emT emp lat e>
20 </a s p:Te mp lat e F ie ld>
21 </Columns>
22 <AlternatingRowStyle BackColor="Aquamarine" />
23 </a sp:Grid View>
1 <as p:CheckBox ID="chkSelectAll" runat="server"Text="全部选中"
OnCheckedChanged="chkSelectAll_CheckedChanged"AutoPos tBack="True"></asp:CheckBox>2 <as p:Button ID="btnDelete" runat="server"Text="删除"OnClick="btnDelete_Click" />1 protected void btnDelete_Click(object sender,EventArgs e)
2 {
3 stringstrDelete="";
4 for(int i=0; i<this.GridView1.Rows.Count; i++)
5 {
6 stringLabel;
7 bool isChecked=((CheckBox)GridView1.Rows[i].FindControl("chkSelect")).Checked;8 Label=((Label)GridView1.Rows[i].FindControl("labXH")).Text;
9 if(isChecked)
10 {
11 strDelete="DB1_1"+"="+Label;
12 }
13 }
14 conn.RunSql("Delete fromDB1 where"+strDelete
15 this.chkSelectAll.Checked=false;
16 GridViewBind();
17 }
18
19 protected void chkSelectAll_CheckedChanged(object sender,EventArgs e)
20 {
21 //遍历GridView行获取CheckBox属性
22 for(int i=0; i<this.GridView1.Rows.Count; i++)
23 {
24 ((Ch e ckBo x)Grid View 1.Ro ws[i].Fin d Co ntro l("chkS e lect")).Ch e cked=this.chkSelectAll.Checked;
25 }
26 }
青果云香港CN2_GIA主机测评青果云香港多线BGP网络,接入电信CN2 GIA等优质链路,测试IP:45.251.136.1青果网络QG.NET是一家高效多云管理服务商,拥有工信部颁发的全网云计算/CDN/IDC/ISP/IP-VPN等多项资质,是CNNIC/APNIC联盟的成员之一。青果云香港CN2_GIA主机性能分享下面和大家分享下。官方网站:点击进入CPU内存系统盘数据盘宽带ip价格购买地...
DiyVM是一家比较低调的国人主机商,成立于2009年,提供VPS主机和独立服务器租用等产品,其中VPS基于XEN(HVM)架构,数据中心包括香港沙田、美国洛杉矶和日本大阪等,CN2或者直连线路,支持异地备份与自定义镜像,可提供内网IP。本月商家最高提供5折优惠码,优惠后香港沙田CN2线路VPS最低2GB内存套餐每月仅50元起。香港(CN2)VPSCPU:2cores内存:2GB硬盘:50GB/R...
妮妮云的知名度应该也不用多介绍了,妮妮云旗下的云产品提供商,相比起他家其他的产品,云产品还是非常良心的,经常出了一些优惠活动,前段时间的八折活动推出了很多优质产品,近期商家秒杀活动又上线了,秒杀产品比较全面,除了ECS和轻量云,还有一些免费空间、增值代购、云数据库等,如果你是刚入行安稳做站的朋友,可以先入手一个119/元季付的ECS来起步,非常稳定。官网地址:www.niniyun.com活动专区...