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 元素,或者根据用户的权限隐藏或禁用特定的控件。

cs 复制代码
<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,您可以将行中的数据字段绑定到命令按钮的参数上,从而实现动态绑定数据的功能。例如,您可以根据数据值的不同,将不同的参数传递给事件处理程序方法。

相关推荐
walking9571 分钟前
重新学习前端之设计模式与架构
前端·javascript·面试
walking9574 分钟前
重新学习前端之TypeScript
前端·javascript·面试
walking9574 分钟前
重新学习前端之Linux
前端·vue.js·面试
walking9575 分钟前
重新学习前端之CSS
前端·vue.js·面试
walking9575 分钟前
重新学习前端之Git
前端·vue.js·面试
walking9575 分钟前
重新学习前端之小程序
前端
魔术师Grace7 分钟前
AI让我退化成原始人了
前端·程序员
铁皮饭盒8 分钟前
今天你会学到这些关键词
前端·后端
李剑一9 分钟前
耗时 2 小时!我复刻了全网超火的通透 3D 水晶球动效,Vue3+Three.js 做出高级视觉特效
前端·three.js
oil欧哟16 分钟前
🤔 很长时间没写文章了,分享一下最近的一些思考
前端·后端