ASP.net web应用 GridView控件常用方法

GridView 控件是 ASP.NET Web Forms 中常用的数据展示控件之一。它提供了一个网格形式的表格,用于显示和编辑数据。GridView 控件对于包含大量数据、需要进行分页、排序和筛选的情况非常有用。

GridView 控件的主要特性包括:

  1. 数据绑定:GridView 可以与各种数据源进行绑定,如数据表、数据集、数据视图、对象集合等。可以通过设置 DataSource 属性或在代码中进行绑定。

  2. 自动生成列:GridView 控件可以自动生成列,根据绑定的数据源自动创建相应的列,每列对应数据源中的一个字段。

  3. 模板列:除了自动生成列,GridView 还支持模板列。通过模板列,可以自定义每列的样式、内容和行为,例如添加按钮、复选框、图标等。

  4. 分页功能:GridView 提供分页功能,允许用户浏览大量数据并按页查看。可以设置 PageSize 属性来控制每页显示的记录数,并通过分页导航在不同页之间切换。

  5. 排序和筛选:GridView 支持按列进行排序和筛选。用户可以单击列标题进行排序,或者使用内置的筛选控件进行数据筛选。

  6. 编辑和更新:GridView 允许用户编辑数据并将更改保存回数据源。它提供了内置的编辑行和命令按钮,用户可以点击编辑按钮进入编辑模式,并使用更新按钮将修改保存回数据源。

  7. 样式和外观:GridView 具有丰富的样式和外观定制选项。可以使用 CSS 样式或设置属性来定义网格和单元格的样式,以及鼠标悬停样式、选定样式等。

GridView 控件是一个强大而灵活的数据显示和编辑工具,可以轻松为 Web 应用程序提供交互和管理数据的功能。

常用的使用方法

     1.数据绑定

<asp:GridView runat="server" ID="gv" >

</asp:GridView>

后端代码:

设置绑定数据源

gv.DataSource=list;

确认绑定数据

gv.DataBind();

list为泛型集合的实体

以上代码放在页面的加载事件就可以显示出一张表的所有数据

2.自定义显示列

上一步我们给GridView绑定了数据,但是他会把所有的数据全部显示出来,如果我们表中有部分信息不想显示出来怎么办?

这个关键属性为 AutoGenerateColumns

可设置值为bool类型   AutoGenerateColumns="false" 时会关闭自动加载全部列

接下来的每列数据显示就需要我们在前台手动添加

<asp:GridView runat="server" ID="gv" AutoGenerateColumns="false">
    <Columns>
        <asp:BoundField DataField="ID" HeaderText="编号" />
    </Columns>
</asp:GridView>

<asp:BoundField DataField="ID" HeaderText="编号" />

这句代码是简单的数据绑定列  DataField为绑定的列  HeaderText是表头列名

DataFormatString="{0:D}"

这条属性为格式化字符串 {0:D} 为格式化日期类型yyyy年mm月dd日

更多的格式化方法可以自行网上搜索

3.自定义列 

<asp:TemplateField> 是 ASP.NET Web Forms 中的一个控件,用于在 GridView、DetailsView 和 ListView 等数据绑定控件中定义自定义模板。

<asp:TemplateField> 具有以下用法和优点:

  1. 自定义布局:使用 <asp:TemplateField>,您可以自定义数据绑定控件中每个单元格的布局和样式。您可以在 <ItemTemplate> 中定义自己的 HTML 结构,包括使用 HTML 标签、CSS 样式和其他 ASP.NET 控件。

  2. 数据绑定:<asp:TemplateField> 允许您在 <ItemTemplate> 中绑定数据字段到控件或 HTML 元素。您可以使用数据绑定表达式、绑定控件(如 <asp:Label><asp:TextBox><asp:DropDownList> 等)或自定义 HTML 标记。

  3. 事件处理:您可以在 <ItemTemplate> 中为控件或 HTML 元素添加事件处理程序。这使您能够对用户的交互作出响应,例如处理按钮点击、文本框更改等。

  4. 多列布局:通过在 <ItemTemplate> 中嵌套多个控件或 HTML 元素,您可以实现复杂的多列布局。这对于显示复杂的数据结构或自定义样式非常有用。

  5. 灵活性:<asp:TemplateField> 提供了灵活性,允许您根据需要自定义数据绑定控件的外观和行为。您可以根据不同的条件或数据值显示不同的控件或 HTML 元素,或者根据用户的权限隐藏或禁用特定的控件。

 

<asp:GridView runat="server" ID="GridView1" AutoGenerateColumns="false"><Columns><asp:TemplateField HeaderText="Name"><ItemTemplate><%# Eval("Name") %></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="Email"><ItemTemplate><a href="mailto:<%# Eval("Email") %>"><%# Eval("Email") %></a></ItemTemplate></asp:TemplateField><asp:TemplateField><ItemTemplate><asp:Button runat="server" ID="EditButton" Text="Edit" CommandName="Edit" CommandArgument='<%# Eval("ID") %>' /></ItemTemplate></asp:TemplateField></Columns>
</asp:GridView>

上述示例中,我们使用 <asp:TemplateField> 定义了一个名为 "Name" 的列,其中使用 <%# Eval("Name") %> 数据绑定表达式显示了数据源中的 "Name" 字段的值。类似地,我们还定义了一个名为 "Email" 的列,其中使用 <a> 标记创建一个邮箱链接,并使用 <%# Eval("Email") %> 数据绑定表达式显示了 "Email" 字段的值。最后,我们在第三列中定义了一个编辑按钮,使用 <asp:Button> 控件,并使用 <%# Eval("ID") %> 数据绑定表达式将 "ID" 字段的值作为命令参数传递。

4.数据绑定事件OnRowDataBound="gv_RowDataBound"

OnRowDataBound 是一个事件属性,用于在 GridView 控件的每一行绑定到数据源后引发事件。通过在 GridView 控件上设置 OnRowDataBound 属性,您可以指定一个事件处理程序方法,在每一行数据绑定时执行自定义逻辑。

OnRowDataBound 的详细用法如下:

  1. 在 ASPX 页面中,找到您的 GridView 控件,并将 OnRowDataBound 属性设置为一个事件处理程序方法的名称,例如 OnRowDataBound="gv_RowDataBound"

  2. 在代码后台(例如在 ASPX.cs 或 ASPX.vb 文件中),编写一个与事件处理程序方法名称相匹配的方法。例如,如果您设置了 OnRowDataBound="gv_RowDataBound",则编写一个名为 gv_RowDataBound 的方法。

  3. 在事件处理程序方法中,您可以访问 GridView 的每一行和单元格,并执行自定义逻辑。您可以使用 e.Row 属性来访问当前的行对象,并使用 e.Row.Cells 属性来访问当前行的单元格对象。

以下是一个示例,展示了 OnRowDataBound 的用法:

ASPX 页面:

<asp:GridView runat="server" ID="GridView1" OnRowDataBound="gv_RowDataBound"><!-- GridView 的列定义 -->
</asp:GridView>

代码后台(ASPX.cs 或 ASPX.vb 文件):

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{if (e.Row.RowType == DataControlRowType.DataRow){// 在这里执行您的逻辑,例如根据特定条件修改单元格的样式或值// 您可以使用 e.Row.Cells 来访问当前行的单元格对象}
}

在上述示例中,我们在 GridView 控件中设置了 OnRowDataBound 属性为 gv_RowDataBound,并在代码后台编写了一个名为 gv_RowDataBound 的方法。在该方法中,我们通过检查 e.Row.RowType 属性,确定当前行是否为数据行,然后可以访问该行的单元格对象并执行自定义逻辑。

OnRowDataBound 的优点和用途包括:

  1. 动态修改行的样式:通过在 OnRowDataBound 事件处理程序中访问行和单元格对象,您可以根据特定条件动态修改行的样式。例如,根据数据值的不同,您可以更改行的背景颜色、字体颜色等。

  2. 操作行的数据:在 OnRowDataBound 事件处理程序中,您可以访问行的数据,并根据需要执行操作。例如,您可以根据数据值的不同,在行中显示不同的控件或文本。

  3. 处理行级操作:通过在 OnRowDataBound 事件处理程序中添加按钮或链接,并为其添加事件处理程序,您可以为每一行提供行级操作。例如,您可以为每一行添加一个“编辑”按钮,并在点击按钮时执行相应的操作。

  4. 动态绑定数据:在 OnRowDataBound 事件处理程序中,您可以根据需要动态绑定数据到行的控件或文本。例如,您可以根据数据值的不同,将不同的文本绑定到行中的标签或文本框。

通过使用 OnRowDataBound,您可以在每一行数据绑定时执行自定义逻辑,从而实现更灵活和个性化的 GridView 控件。

5.行命令事件OnRowCommand

当您在 GridView 控件的行中的命令按钮(如按钮或链接按钮)被点击时,可以使用 OnRowCommand 事件属性来引发事件。通过在 GridView 控件上设置 OnRowCommand 属性,您可以指定一个事件处理程序方法,在命令按钮被点击时执行自定义逻辑。

OnRowCommand 的详细用法如下:

  1. 在 ASPX 页面中,找到您的 GridView 控件,并将 OnRowCommand 属性设置为一个事件处理程序方法的名称,例如 OnRowCommand="gv_RowCommand"

  2. 在代码后台(例如在 ASPX.cs 或 ASPX.vb 文件中),编写一个与事件处理程序方法名称相匹配的方法。例如,如果您设置了 OnRowCommand="gv_RowCommand",则编写一个名为 gv_RowCommand 的方法。

  3. 在事件处理程序方法中,您可以根据需要访问 GridView 的行、命令和数据,并执行自定义逻辑。您可以使用 e.CommandName 属性来获取命令的名称,使用 e.CommandArgument 属性来获取命令的参数,使用 e.Row 属性来访问当前的行对象。

以下是一个示例,展示了 OnRowCommand 的用法:

ASPX 页面:

<asp:GridView runat="server" ID="GridView1" OnRowCommand="gv_RowCommand"><!-- GridView 的列定义 --><Columns><asp:ButtonField ButtonType="Button" CommandName="Edit" Text="Edit" CommandArgument='<%# Eval("ID") %>' /><asp:ButtonField ButtonType="Button" CommandName="Delete" Text="Delete" CommandArgument='<%# Eval("ID") %>' /></Columns>
</asp:GridView>

代码后台(ASPX.cs 或 ASPX.vb 文件):

protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{if (e.CommandName == "Edit"){// 执行编辑操作// 您可以使用 e.CommandArgument 获取命令的参数// 您可以使用 e.Row 获取当前的行对象string id = e.CommandArgument.ToString();// 根据 id 执行编辑逻辑}else if (e.CommandName == "Delete"){// 执行删除操作// 您可以使用 e.CommandArgument 获取命令的参数// 您可以使用 e.Row 获取当前的行对象string id = e.CommandArgument.ToString();// 根据 id 执行删除逻辑}
}

在上述示例中,我们在 GridView 控件中设置了 OnRowCommand 属性为 gv_RowCommand,并在代码后台编写了一个名为 gv_RowCommand 的方法。在该方法中,我们根据 e.CommandName 的值判断点击的是哪个命令按钮,并根据需要执行相应的操作。我们可以使用 e.CommandArgument 属性获取命令的参数,使用 e.Row 属性获取当前的行对象。

CommandArgument 是一个命令按钮的参数,可以通过 CommandArgument='<%# Eval("ID") %>' 的方式将行中的数据字段绑定到命令按钮的参数上。在事件处理程序方法中,您可以使用 e.CommandArgument 获取命令按钮的参数,从而根据需要执行相关操作。

OnRowCommand 的优点和用途包括:

  1. 处理行级操作:通过在 OnRowCommand 事件处理程序中判断命令的名称,并根据需要执行相应的操作,您可以为每一行提供行级操作。例如,您可以为每一行添加一个“编辑”按钮和一个“删除”按钮,并在点击按钮时执行相应的编辑或删除操作。

  2. 访问行和数据:在 OnRowCommand 事件处理程序中,您可以访问行的数据,并根据需要执行操作。例如,您可以根据数据值的不同,在行中显示不同的控件或文本。

  3. 动态绑定数据:通过使用 CommandArgument,您可以将行中的数据字段绑定到命令按钮的参数上,从而实现动态绑定数据的功能。例如,您可以根据数据值的不同,将不同的参数传递给事件处理程序方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/74957.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux Nginx+Tomcat负载均衡、动静分离

linux NginxTomcat负载均衡、动静分离 1、Tomcat的基本介绍1.1Tomcat是什么&#xff1f;1.2Tomcat的构成组件1.3Tomcat的核心功能1.4Tomcat请求过程 2、Tomcat部署2.1安装tomcat2.2优化tomcat启动速度2.4主要目录说明 3、Tomcat 虚拟主机配置3.1创建fsj和mws项目目录和文件3.2修…

【TypeScript】TypeScript的介绍、安装和配置

TypeScript简介 TypeScript是JavaScript的超集。它对JS进行了扩展&#xff0c;向JS中引入了类型的概念&#xff0c;并添加了许多新的特性。TS代码需要通过编译器编译为JS&#xff0c;然后再交由JS解析器执行。TS完全兼容JS&#xff0c;换言之&#xff0c;任何的JS代码都可以直…

Unity(三) Shader着色器初探

学习3D开发技术的时候无可避免的要接触到Shader&#xff0c;那么Shader是个什么概念呢&#xff1f;其实对于开发同事来说还是比较难理解的&#xff0c;一般来说Shader是服务于图形渲染的一类技术&#xff0c;开发人员可以通过其shader语言来自定义显卡渲染页面的算法&#xff0…

状态管理艺术——借助Spring StateMachine驭服复杂应用逻辑

文章目录 1. 什么是状态2. 有限状态机概述3. Spring StateMachine4. Spring StateMachine 入门小案例4.1 接口测试 5. 总结 1. 什么是状态 在开发中&#xff0c;无时无刻离不开状态的一个概念&#xff0c;任何一条数据都有属于它的状态。 比如一个电商平台&#xff0c;一个订…

MySQL (2) DQL

目录 操作须知 1 单表查询 1.1 范围查询 1.2 模糊查询 1.3 去重查询 1.4 正则查询 1.5 替换查询 1.6 排序查询 1.7 聚合分组查询 1.7.1 聚合查询(只有1行) 1.7.2 分组查询(针对"聚合查询") 1.8 分页查询 1.9 拼接查询 2 多表查询 2.1 内连接 2.2 外连…

npm介绍

npm介绍 npm&#xff08;Node Package Manager的缩写&#xff09;是一个软件包管理器&#xff0c;主要进行JavaScript的包管理。通过npm&#xff0c;我们可以很方便地进行JavaScript包的下载、升级&#xff0c;我们也可以把我们开发的JavaScript包共享给其他使用者。 在npm没…

CRC原理介绍及STM32 CRC外设的使用

1. CRC简介 循环冗余校验&#xff08;英语&#xff1a;Cyclic redundancy check&#xff0c;简称CRC&#xff09;&#xff0c;由 W. Wesley Peterson 于 1961 年首次提出的一种纠错码理论。 CRC是一种数据纠错方法&#xff0c;主要应用于数据通信或者数据存储的场合&#xff…

TLS协议深度解析:挖掘现代网络安全防御的底层技术

正常简单的通讯 1、服务器生成一对密钥&#xff0c;公钥A、私钥A 2、浏览器请求服务器时&#xff0c;服务器把公钥A传给浏览器 3、浏览器随机生成一个对称加密的密码S&#xff0c;用公钥A加密后传给服务器 4、服务器接收后&#xff0c;用私钥A解密&#xff0c;得到密钥S 5、浏…

【C++从入门到精通】第1篇:C++基础知识(上)

文章目录 1.1 C语句和程序结构1.1.1 本篇介绍1.1.2 语句1.1.3 函数和主函数1.1.4 解析Hello world1.1.5 语法和语法错误1.1.6 练习时间 1.2 注释1.2.1 单行注释1.2.2 多行注释1.2.3 正确使用注释1.2.4 注释掉代码 1.3 对象和变量1.3.1 数据和值1.3.2 对象和变量1.3.3 变量实例化…

【python爬虫】批量识别pdf中的英文,自动翻译成中文下

不管是上学还是上班,有时不可避免需要看英文文章,特别是在写毕业论文的时候。比较头疼的是把专业性很强的英文pdf文章翻译成中文。我记得我上学的时候,是一段一段复制,或者碰到不认识的单词就百度翻译一下,非常耗费时间。之前的文章提供了批量识别pdf中英文的方法,详见【…

java中HashMap如何根据value的值去获取key是多少

在Java中&#xff0c;HashMap是一种基于键值对存储数据的数据结构。HashMap并没有直接提供根据value获取key的方法。但你可以通过遍历HashMap的entrySet&#xff0c;找到对应的value&#xff0c;然后获取其对应的key。 以下是一个示例代码&#xff1a; public <K, V> K…

【深度学习实战—6】:基于Pytorch的血细胞图像分类(通用型图像分类程序)

✨博客主页&#xff1a;米开朗琪罗~&#x1f388; ✨博主爱好&#xff1a;羽毛球&#x1f3f8; ✨年轻人要&#xff1a;Living for the moment&#xff08;活在当下&#xff09;&#xff01;&#x1f4aa; &#x1f3c6;推荐专栏&#xff1a;【图像处理】【千锤百炼Python】【深…

LeetCode 面试题 04.03. 特定深度节点链表

文章目录 一、题目二、C# 题解1. 队列层序遍历&#xff08;2 层 while&#xff09;2. 队列层序遍历&#xff08;1 层 while&#xff09;3. 递归解法 一、题目 给定一棵二叉树&#xff0c;设计一个算法&#xff0c;创建含有某一深度上所有节点的链表&#xff08;比如&#xff0c…

java面试题-RabbitMQ面试题

RabbitMQ面试题 面试官&#xff1a;RabbitMQ-如何保证消息不丢失 候选人&#xff1a; 嗯&#xff01;我们当时MYSQL和Redis的数据双写一致性就是采用RabbitMQ实现同步的&#xff0c;这里面就要求了消息的高可用性&#xff0c;我们要保证消息的不丢失。主要从三个层面考虑 第一…

dji uav建图导航系列()move_base

文章目录 1、导航框架2、move_base功能包3、amcl功能包4、代价地图的配置4.1、通用配置文件4.2、全局规划配置文件4.3、局部规划配置文件5、局部规划器配置6、launch文件1、导航框架 导航的关键是机器人定位和路径规划两大部分 move_base:实现机器人导航中的最优路径规划 am…

datagrip 相关数据连接信息无缝迁移

背景 因为公司换电脑了&#xff0c;接触的项目比较多&#xff0c;不同项目&#xff0c;不同环境的数据库连接有好几十个&#xff0c;如果在新电脑上挨个重新连接一遍劳心劳力&#xff0c;所以想看一下能不能直接将之前保存的连接信息直接迁移到新的电脑上面。 为此&#xff0c…

深度学习常用的Python库(核心库、可视化、NLP、计算机视觉、深度学习等)

&#xff08;1&#xff09;核心库与统计&#xff1a;Numpy、Scipy、Pandas、StatsModels。 &#xff08;2&#xff09;可视化&#xff1a;Matplotlib、Seaborn、Plotly、Bokeh、Pydot、Scikit-learn、XGBoost/LightGBM/CatBoost、Eli5。 &#xff08;3&#xff09;深度学习&a…

MFC自定义消息的实现方法----(线程向主对话框发送消息)、MFC不能用UpdateData的解决方法

在MFC中&#xff0c;我们一边在使用多线程时&#xff0c;经常会遇到在需要调用到新建的控件&#xff0c;此时建议不要在新建的线程中直接调用主对话框的控件&#xff0c;我们可以通过自定义消息&#xff0c;在新建线程中发送并触发主线程进行相关的界面控件操作。 以Dialog对话…

Docker:01 OverView

Docker&#xff1a;01 OverView 基本介绍 Docker是一个用于开发、交付、运行应用程序的开放平台&#xff0c;可以使应用程序与基础架构分开&#xff0c;以便快速交付软件。 Docker在一个被叫做容器的隔离环境下&#xff0c;提供了打包和运行的能力。 容器非常轻量化&#x…

Android studio 调整jar包顺序

第一步&#xff1a;编译jar包&#xff0c;放入lib路径下&#xff1a;如&#xff1a; 第二步&#xff1a;app 目录下build.gradle 中添加 compileOnly files(libs/classes.jar) 第三步&#xff1a;project目录下build.gradle 中添加 allprojects {gradle.projectsEvaluated {t…