ASP.NET整理:GridView,基本用法,高级用法,分页

GridView控件实现分页 当GridView中显示的记录很多的时候,可以通过GridView的分页功能来分页显示这些记录。 如果GridView是直接绑定数据库,则很简单:只要点击GridView空间左上角的小三角形,再弹出的选项中,将"启动分页"打上勾即可。 如果是用代码实现,则需要这么做: 1、允许分页:设置AllowPaging=True; 2、设置GridView属性栏中PagerSetting里的一些属性 阅读详情

GridView

一.基础部分

分页:只有用SqlDataSource作为数据源的时候才有

在用ObjectDataSource的时候需要另外写代码

另外该控件的“排序”和“分页”都打勾的时候,先进行整体排序,再分页;

当启用“分页”时,还需再其属性面板指定以下属性:

AllowPaging

PageSize

PageIndex:当前索引

PageCount:这个会自动结算出来,得到总页数

1.BoundField字段:

DataFormatString:

{0:c}:货币

{0:N}:数字

{0:yy-mm-dd}:日期

在模版列中,会用到<%# Bind(...)%>和<%# eval_r(...)%>

其中Bind是双向数据绑定的,不能单独使用,一般用于textbox等的Text属性,并且要用单引号,比如 标签内属性Text='<%# Bind("Id")%>'

而Eval是单向数据绑定,可单独使用,常用于进行格式化,比如:Text='<%# eval_r("publishDate","{0:yy-mm-dd}")%>'

另外在进行三元表达式的时候需要进行转型,否则会没效果,如下:

Text='<%# eval_r("gender").ToString()=="1"?"男":"女"%>'

又比如:

<asp:Label ID="Label2" runat="server" Text='<%# eval_r("gender").ToString()=="True"?"男 ":"女" %>'></asp:Label>   //Gender取值后要进行转换.ToString()

 

2.ButtonField------------>GridView的RowCommand事件

CommandName:区分是哪个按钮-->e.CommandName,用于获取命令名

另外如果有“列”不想被修改,可以设置其readonly属性true

 

3.HyperLinkField

属性:

DataNavigatorUrlFormatString:设置url:detail.aspx?id={0}

DataVavigatorUrlFields = "id"------------------------------------↑

DataTextField:显示字段

 

4.string text = gvHr.Rows[index].cells[0].Text

相当于 GridViewRow gr = gvHr.Rows[index];

string text = gr.Cells[0].Text;

 

5.一般gridview中的主键不显示出来,存放在DataKeyNames属性中,用DataKeys来获取;

另外如果把某列的visible属性设为false,那么该列将不会往返于服务器和客户端

eg:

gvHr.DataKeyNames = new string[]{"Id","Name"};

gvHr.DataBind();

单个时取值: gvHr.DataKeys[index].Value.ToString();

多个时取值: gvHr.DataKeys[index].Values["主键字段1"].ToString();

 

6.光棒效果

在RowDataBound事件中写:

if(e.Row.RowType==DataControlRowType.DataRow)

{

e.Row.Attribute.Add("onmouseover","currentColor=this.style.backgroundColor;this.style.backgroundColor='red'"); //red用单引号

e.Row.Attribute.Add("onmouseout","this.style.backgroundColor=currentColor;")

}

 

二.进阶

1.GridView取得行和列的“单元格”的语法:

GvId.Rows[index].Cells[index].Text;

      或GridViewRow gvr = gvId.Rows[index];

string text = gvr.Cells[index].Text; //都是通过Text属性来取值

 

2.隐式存储主键:

存:gvId.DataKeyNames = new string[]{"主键字段名称1","主键字段名称2"......};

GvId.DataBind();

PS:这里的主键字段名称1是实体类中的属性名,对应数据库中主键字段

取:gvId.DataKeys[index].Value.ToString();

gvId.DataKeys[index].Values["名称1"].ToString();//有的时候这样子会报错

GvId.DataKeys[index]["名称1"].Value.ToString(); //有的时候得这样取

 

3.在gridView中如何将取出来的0,1转换为中文,比如性别用"男女"表示

通过模板列来实现:

<itemTemplate>中通过表达式来实现

<asp:Label runat="server " ID="gender" Text='<%# eval_r("sex").ToString()=="True"?"男":"女"%>' ></asp:Label>

</itemTemplate>

 

4.在模板列中可以调用服务器端的方法:

假设在当前页面的后置代码中有这么个方法:

public string GetDeptName(stringid){....}

在页面模板列中调用:

<itemTemplate>中通过表达式来实现

<asp:Label runat="server " ID="gender" 

Text='<%# GetDeptName(eval_r("id").ToString())%>' ></asp:Label>

</itemTemplate>

这里需要注意下传的参数eval_r("id").ToString(),好像这里无论怎么转型,传到后置代码中GetDeptName()方法中的参数都是object类型,因为之前做的一个Vip价格方法,方法在定义的时候直接用object来定义形参,然后在方法内部再进行转型,比如:public string GetVipPrice(object price,object discount)

 

5.按钮事件:

a) RowCommand事件:不获得行号,即SelectedIndex属性永远是 -1

b) SelectedIndexChanging选择事件:

e.NewSelectedIndex:默认值是-1

例子:

protected void GridView1_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)

{//选择事件

//默认值为-1

this.GridView1.SelectedIndex = e.NewSelectedIndex;

//显示主键(显式)

int index = e.NewSelectedIndex;

string key = this.GridView1.Rows[index].Cells[0].Text;

Response.Redirect("show.aspx?id="+key);

 

//无主键显式(隐式)[前提:设置过DataKeyNames]

string index = this.GridView1.DataKeys[e.NewSelectedIndex].Value.ToString();

//凡是gridView做的一般都是这样子取主键的

}

c) RowEditing编辑事件:

一般只在代码中写:this.gvId.EditIndex = e.NewEditIndex;

            Bind();//自定义Bind绑定方法

d) RowCancellingEdit取消事件:

一般值在代码中写:this.gvId.EditIndex = -1;

  Bind();

e) RowUpdating更新事件:

string key = this.gvId.DataKeys[e.RowIndex].Value.ToString();

//获得值,非模板列

1. string value = (this.gvId.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox).Text;

2. string value = (this.gvId.Rows[e.RowIndex].FindControl("控件id") as TextBox).Text

这里的2种方法是从单元格中查找所需的控件,依次将他转换为相应的控件来取值;注意这里的Controls[0]和FindControl方法,有的时候会找不到控件而返回一个null导致为初始化的错误产生

PS:一般不报错,但是取到的值不是更新后的值时,一般就是Load事件了,IsPostBack属性要判断下

f) RowDeleting删除事件:

方法跟上面的事件差不多,只要获得主键,然后调用bll层的删除方法即可

g) RowDataBound事件:单选删除例子
ASP.NET整理:GridView,基本用法,高级用法,分页

上面的LinkButton是手动在模板列中添加的控件,若要实现上面的删除功能,还需要在页面源码中给gridView添加上模板列(CommandField里面的删除功能)
ASP.NET整理:GridView,基本用法,高级用法,分页

 注意选中的地方,除了CommandName要用Delete外(会自动对应到Delete事件),还需要手动添加CommandArgument属性

最后在RowDeleting事件中获得该值:

LinkButton lnb = gvId.Rows[e.RowIndex].FindControl("lnkBtnDel") as LinkButton;

string id = lnb.CommandArgument.ToString();

多选删除功能,只有一个总删除按钮时,用到checkbox

思路:

首先给删除按钮添加点击事件,同上:

this.btnDel.Attributes.Add("onclick","return confirm('确认删除?')");

 

然后给【删除按钮添加事件】btnDel_Click(object sender,EventArgs e)内添加

foreach(GridViewRow gr in this.gvId.Rows)

{

CheckBox chk = gr.FindControl("chbSelect") as CheckBox;

if(chk.Checked)

{

//获取主键

string key = this.gvId.DataKeys[gr.RowIndex].Value.ToString();

//执行删除操作

StringBuilder sbSql = new StringBuilder();

sbSql.AppendLine("DELETE FROM [users] WHERE");

sbSql.AppendLine("  [userid]=@userid");

SqlParameter[] param = new SqlParameter[]{

new sqlParameter("@userid",key)

};

DBHelper.ExecuteCommand(sbSql.ToString(), param);

}

}

//重新绑定

Bind();

大年三十整理的asp.net资料!(不得不收藏) http://blog.csdn.net/mengyao/archive/2007/02/17/1511356.aspx使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.NET2.0小技巧--内部控件权限的实现 图片滚动代码。 阅读详情

相关推荐

ASP.NET及C#网上资料小收藏

<br />http://blog.csdn.net/guyehanxinlei/archive/2008/01/18/2051333.aspx<br />使用SqlBulkCopy类加载其他源数据到SQL表 <br />在数据回发时,维护ASP.NET Tree控件的位置 <br />vagerent的vs2005网站开发技巧 <br />ASP.NET2.0小技巧--内部控件权限的实现 <br />图片滚动代码。 <br />css——之三行三列等高布局 <br />Datagird TemplateC

qkqlqq0288的专栏 2296

GridView,基本用法,高级用法,分页

GridView 一.基础部分 分页:只有用SqlDataSource作为数据源的时候才有 在用ObjectDataSource的时候需要另外写代码 另外该控件的“排序”和“分页”都打勾的时候,先进行整体排序,再分页; 当启用“分页”时,还需再其属性面板指定以下属性: AllowPaging PageSize PageIndex:当前索引 PageCount:这个

wangjingjing1014的专栏 812

如何实现GridView分页功能?

实现GridView分页功能的四个关键步骤 1、设置AllowPaging="True" 2、设置PageSize=每页纪录数。 3、设置分页事件OnPageIndexChanging=分页事件;如:本例分页事件命名为:Page_Change 前三步具体如下例蓝色部分: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowCommand="Grid_Row_Com" AllowPaging

xiongxinle的博客 3113

ASP.NET中GridView的自定义分页

在ASP.NET 2.0种提供了GridView控件。该控件的分页比较方便,可以通过在Visual Studio .NET 2005种简单设置即可实现各种分页功能。 1. 默认分页方式 (1) 是否允许分页 GridView的AllowPaging属性。 (2) 每页记录数 GridView的PageSize (3) 分页导航条形式 GridView的PagerSettings属性的Mode:Nu

下里巴人 1106

手把手推导APM的 sqrt_controller控制器

前言 玩过无人机的朋友对APM应该都不会陌生,如果是搞过多旋翼飞控且读过代码,肯定遇到过sqrt_controller控制器,它频繁的在位置、姿态控制中出现,所以非常有必要搞清楚这个控制原理。 下面以高度控制器为例来分析。 高度控制 APM的高度控制采用PID串级3环控制,即外环位置控制,中间速度控制,内环速度控制,如下图所示。 今天要讨论的sqrt_controller就是应用于位置控制器中。位置控制器的输出是速度控制器的参考reference输入,如果采用单P控制,其输出vel_ref = pos_e

周小逗的博客 3031

YOLOv8 ultralytics使用笔记----labelme标记数据,训练模型、追踪目标。

Ultralytics是一个Python库,它是为执行高级计算机视觉任务而创建的,如对象检测、实例分割、图像分类等。Ultralytics为YOLO模型发布了一个全新的存储库,它被构建为用于机器视觉统一框架。这里先利用,并激活。

qq_48050838的博客 1万+

GridView分页的实现

要在GridView中加入 //实现分页 AllowPaging=“true” //一页数据10行 PageSize=“10” // 分页时触发的事件 OnPageIndexChanging=“gvwDesignationName_PageIndexChanging” 在服务器事件里 protected void gvwDesignationName_PageIndexChanging(object sender, GridViewPageEventArgs e) { gvwDe

zq9955的博客 1985

OpenCLI入门:让任何网站变成你的命令行工具(超详细版)

最有用的工具,往往是最简单的。 opencli就是这样。 它不会帮你写代码,不会帮你做决策,但它能把200+个平台装进你的命令行。 让你用最简单的方式,获取最丰富的数据。

weixin_66295112的博客 2093

ASP.NET整理:GridView,基本用法…

十七.GridView 一.基础部分 分页:只有用SqlDataSource作为数据源的时候才有 在用ObjectDataSource的时候需要另外写代码 另外该控件的“排序”和“分页”都打勾的时候,先进行整体排序,再分页; 当启用“分页”时,还需再其属性面板指定以下属性: AllowPaging PageSize PageIndex:当前索引 PageCount:这个会自动结算出来,得到

Mr.Vincent with .NET 583

SurfaceControlViewHost使用介绍

可以看到,主要用途:是把一个进程的View显示到另外一个进程里面。

chadm.xiang 1289

MATLAB配置MinGW编译器的完整指南

本文提供了在Windows系统上为MATLAB配置MinGW编译器的完整指南。详细介绍了通过MATLAB附加功能管理器在线安装和手动离线安装两种核心方法,并重点说明了如何解决常见的“未找到支持的编译器”等错误。指南包含从版本检查、环境变量配置到最终使用mex命令验证的每一步,帮助用户顺利完成MATLAB与MinGW的集成,以支持C/C++代码编译。

weixin_29031057的博客 265

ASP.NET整理:DataList分页PagedDa…

十八.DataList控件 保存主键的方式:1.DataKeyField 2.设置隐藏域runat="server" id="hdid" value='eval_r("id")%>' /> 属性: RepeatColumns:显示的列数,默认为0,表示单行/单列 RepeatDirection:Horizontal:水平;Vertical:垂直 runat="server" id="dlI

Mr.Vincent with .NET 399

Python异步协程爬虫优化:解决aiohttp中ServerDisconnectedError的高效策略

本文深入探讨了在Python异步协程爬虫中使用aiohttp时,如何高效解决常见的ServerDisconnectedError问题。核心策略包括全局复用ClientSession、精细配置TCPConnector连接池、实施请求重试与速率限制,从而构建稳定、高效的异步爬虫架构,有效避免服务器断开连接错误。

pz890123的博客 862

ASP.NET整理:Server对象Execute,…

二十三.Server对象 a常用方法: HtmlEncode:想输出""而又不想被浏览器认为是换行时 string str = Server.HtmlEncode("test"); Response.Write(str); //《h1>test PS:有一个预览标签《pre》它也会原样输出 MapPath:参数为虚拟路径,返回物理位置 Server.MapPath("~/defau

Mr.Vincent with .NET 767

华为eNSP镜像包全集下载,包含CE6800、CE12800、NE系列等!

你好,这里是网络技术联盟站。昨天给大家介绍了win11、10下安装eNSP最新系列(1.3.00)并完美运行,附下载。从文章发布到发文前,一直有朋友想让瑞哥提供一下华为ENSP镜像包,今天安排!eNSP安装包、以及eNSP中所需要的镜像包(设备包)(CE、CX、NE40E、NE5000E、NE9000、USG)例如:导入一个USG设备包,eNSP中的USG5500和USG6000V都是可以启动的。如果你的报错“40”的话,那么打开Oracle VM VirtualBox这个虚拟机,删除对应报错的虚拟机,然后

网络技术联盟站 3万+

MATLAB基础应用精讲-【数模应用】信用评分模型(附R语言和python代码实现)

信用评分模型是近年来兴起的一种为了保障银行和其他金融部门的金融安全而设立的一种关于人身金融权限的划定模型。该模型指根据客户的信用历史资料,利用一定的信用评分模型,得到不同等级的信用分数,根据客户的信用分数,来决定客户所可以持有的金额权限,从而保证还款等业务的安全性。而随着在现代社会和公司中,贷款,信用卡的作用日渐突出,信用评分模型的发展前景不可估量。信贷风险是指借款人因偿还贷款或履行合同承诺而破产而产生损失的可能性。传统上,它与贷款人无法偿还所欠利息和本金、影响现金流和增加装配成本所产生的风险有关。

qq_36130719的博客 364

转: 大年三十整理的asp.net资料!(经典)

使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.NET2.0小技巧--内部控件权限的实现 图片滚动代码。 css——之三行三列等高布局 Datagird TemplateColumn类...

576

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Asp.net 文章资料整理

如何在数据层分页以提高性能 为gridview添加删除提示。 解决ASP 2.0中GridView控件的删除、插入、编辑命令操作客户端确认问题的另一方法 基于.net开发平台项目案例集锦 EnterPrise应用(5) Security Application Block应用程序块 授权处理(VB.NET) Ajax实现...

weixin_30518397的博客 673

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

yangzhiqi1984 的 转: 大年三十整理的asp.net资料!(经典)

 yangzhiqi1984 的 转: 大年三十整理的asp.net资料!(经典)   使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.NET2.0小技巧--内部控件权限的实现 图片滚动代码。 css——之三行三列等

shenzhen_zsw的专栏 974

Asp.net学习笔记----使用GridView+ObjectDataSource进行自定义分页排序

很久以前学习过Asp.net1.1,现在才有机会学习Asp.net2.0,暂时发现GridView是个好东西,练习使用了一下它的自定义分页功能,由于不怎么熟悉,花了一点时间查资料和摸索才搞定,现在整理出来和大家一起分享讨论.本例程采用类似三层架构编写,但不同于严格的三层架构。第一步:编写分页通用存储过程Create Procedure UP_CommonTablePaging

杨杨的专栏 2270

超级asp.net资料

function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storei

南三方---网站设计开发录 915

ASP.NET整理:用户登录和注册的参…

十五.用户登录和注册的参考方法 登录: public bool Login(string loginId, string loginPwd, out  User validUser) //out,外部接收再使用 { User user = new UserService().GetUserByLoginId(loginId); if(user == null) { validUser

Mr.Vincent with .NET 608

整理的asp.net资料(收藏)

<br />使用SqlBulkCopy类加载其他源数据到SQL表在数据回发时,维护ASP.NET Tree控件的位置vagerent的vs2005网站开发技巧ASP.NET2.0小技巧--内部控件权限的实现图片滚动代码。css——之三行三列等高布局Datagird TemplateColumn类型列中如何设定日期格式为yyyy-MM-dd格式?SQL Server各种日期计算方法在sqlserver中如何根据字段名查找字段所在的表[CommunityServer]看RBAC的一方景象七招制胜ASP.NET应

Roby sky 1724

(轉貼) 大年三十整理的asp.net资料! (.NET) (ASP.NET)

 大年三十整理的asp.net资料! 使用SqlBulkCopy类加载其他源数据到SQL表 在数据回发时,维护ASP.NET Tree控件的位置 vagerent的vs2005网站开发技巧 ASP.NET2.0小技巧--内部控件权限的实现 图片滚动代码。 css——之三行三列等高布局 Datagird ...

weixin_34405332的博客 826

【转】 大年三十整理的asp.net资料! (.NET) (ASP.NET)

http://www.cnblogs.com/5tao/archive/2008/08/28/1279014.html    使用SqlBulkCopy类加载其他源数据到SQL表在数据回发时,维护ASP.NET Tree控件的位置vagerent的vs2005网站开发技巧ASP.NET2.0小技巧--内部控件权限的实现图片滚动代码。css——

郑长风 2206
上一篇: 收藏 C#字符串几个常用函数
Mr_yinwei
博客等级 码龄15年 3粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值