让Asp.NET的DataGrid可排序、可选择、可分页

使用order函数对data.table数据进行指定列的排序 通过指定要排序的列名,我们可以按照指定列的值对数据进行升序排序。order函数返回排序后的行索引,我们可以将其应用于data.table以获得排序后的结果。在data.table中,可以使用order函数对数据进行排序,以便按照指定列的值进行排序。除了按照单个列进行排序外,我们还可以按照多个列的值进行排序。首先,按照Age列的值进行排序,然后按照Name列的值进行排序。可以看到,data.table数据首先按照Age列的值排序,然后在相同Age值的情况下按照Name列的值进行排序。 阅读详情

让Asp.NET的DataGrid可排序、可选择、可分页

       DataGrid是Asp.NET中的一个重要的控件,经常我们都将DataGrid做成可分页的和可排序的,有时还需要加上选择功能。这些都是经常需要用到的方法,其实是比较简单的。

 

设计思路:

为了方便起见,我们连接SQL Server 2000的NorthWind数据库的Orders表,从数据库里得到此表的数据视图。利用DataGrid的SortCommand事件实现排序。用一个模板列加上CheckBox控件实现选择。可用DataGrid的属性生成器的“分页”选项或者自己修改HTML实现分页。

 

HTML:

  • 添加一个DataGrid,命名为dgOrder。
  • 添加了一个模板列,模板列里放一个名为Cb的CheckBox控件。此列用来实现选择
  • 为要排序的每个列加上排序表达式SortExpression。
  • 利用列的DataFormatString来格式化列,象DataFormatString="{0:d}"显示日期格式。
  • 设置PageSize="15"每页显示15行数据,AllowPaging="True" 为允许分页 。

 

整个HTML页代码:

<form id="Form1" method="post" runat="server">

       <asp:datagrid id="dgOrder" runat="server" Height="515px" Width="718px" AutoGenerateColumns="False" AllowSorting="True" CellPadding="4" BorderWidth="1px" BorderColor="#A0ABEB" PageSize="15" BorderStyle="Solid" BackColor="White" GridLines="Vertical" ForeColor="Black" AllowPaging="True" ShowFooter="True">

              <SelectedItemStyle ForeColor="White" BackColor="Black"></SelectedItemStyle>

              <AlternatingItemStyle BackColor="#EEEEEE"></AlternatingItemStyle>

              <HeaderStyle HorizontalAlign="Center" ForeColor="White" BorderColor="# 6876C 5" BackColor="# 6876C 5"></HeaderStyle>

              <FooterStyle ForeColor="White" BackColor="# 6876C 5"></FooterStyle>

              <Columns>

                     <asp:TemplateColumn>

                            <ItemTemplate>

                                   <FONT face="宋体">

                                          <asp:CheckBox id="Cb" runat="server"></asp:CheckBox></FONT>

                            </ItemTemplate>

                     </asp:TemplateColumn>

                     <asp:BoundColumn DataField="orderid" SortExpression="orderid" HeaderText="ID">

                            <HeaderStyle Width="180px"></HeaderStyle>

                     </asp:BoundColumn>

                     <asp:BoundColumn DataField="ShipCountry" SortExpression="ShipCountry" HeaderText="ShipCountry">

                            <HeaderStyle Width="180px"></HeaderStyle>

                     </asp:BoundColumn>

                     <asp:BoundColumn DataField="ShippedDate" SortExpression="ShippedDate" HeaderText="ShippedDate" DataFormatString="{0:d}">

                            <HeaderStyle Width="180px"></HeaderStyle>

                     </asp:BoundColumn>

                     <asp:BoundColumn DataField="Freight" SortExpression="Freight" HeaderText="Freight">

                            <HeaderStyle Width="180px"></HeaderStyle>

                     </asp:BoundColumn>

                     <asp:BoundColumn DataField="ShipAddress" SortExpression="ShipAddress" HeaderText="ShipAddress">

                            <HeaderStyle Width="480px"></HeaderStyle>

                     </asp:BoundColumn>

              </Columns>

              <PagerStyle HorizontalAlign="Center" ForeColor="Black" Position="TopAndBottom" BackColor="White" Mode="NumericPages"></PagerStyle>

       </asp:datagrid>

</form>

 

 

 

后台类添加以下代码:

 

Imports System.Data.SqlClient

 

'得到数据视图,参数为要排序的列

Private Function GetDv(ByVal strSort As String) As DataView

        '定义数据库连接

        Dim dv As DataView

        Dim CN As New SqlConnection()

        Try

            '初始化连接字符串

            CN.ConnectionString = "data source=pmserver;initial catalog=Northwind;persist security info=False;user id=sa;Password=sa;"

            CN.Open()

'从NorthWind得到orders表的数据

            Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from orders", CN)

            Dim ds As New DataSet()

            adp.Fill(ds)

            '得到数据视图

            dv = ds.Tables(0).DefaultView

        Catch ex As Exception

#If DEBUG Then

            Session("Error") = ex.ToString()

            Response.Redirect("../error.aspx")        '跳转程序的公共错误处理页面

#End If

        Finally

            '关闭连接

            CN.Close()

        End Try

        '排序

        dv.Sort = strSort

        Return dv

    End Function

 

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not IsPostBack Then

            ViewState("strSort") = "orderid"

            dgOrder.DataSource = GetDv(ViewState("strSort").ToString())

            dgOrder.DataBind()

        End If

    End Sub

       '排序

    Private Sub dgOrder_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles dgOrder.SortCommand

        dgOrder.CurrentPageIndex = 0

          '得到排序的列

        ViewState("strSort") = e.SortExpression.ToString()

        dgOrder.DataSource = GetDv(ViewState("strSort").ToString())

        dgOrder.DataBind()

    End Sub

 

       '分页

    Private Sub dgOrder_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles dgOrder.PageIndexChanged

          '得到分页的页号

        dgOrder.CurrentPageIndex = e.NewPageIndex

        dgOrder.DataSource = GetDv(ViewState("strSort").ToString())

        dgOrder.DataBind()

    End Sub

运行结果如下图所示:(点击列标头可以排序)

 

为了知道用户选择的是哪些记录,我们可以利用DataGridItem的FindControl得到CheckBox的值,我们来添加一个按钮,再写如下代码:

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim item As DataGridItem

        Dim StrScript As String

        StrScript = "<script language=javascript>alert('"

          '循环表格的项,FindControl

        For Each item In Me.dgOrder.Items

            If CType(item.FindControl("cb"), System.Web.UI.WebControls.CheckBox).Checked Then

                Try

                    StrScript += item.Cells(1).Text & Space(2)

                Catch ex As Exception

                End Try

            End If

        Next

        StrScript += "被选择!')</script>"

        RegisterClientScriptBlock("系统消息", StrScript)

    End Sub

 

上面的代码RegisterClientScriptBlock添加Java Script脚本弹出对话框。(其实Vb Script的对话框比Java Script的对话框多更多的显示和控制方式,但Netscape的浏览器不支持,大家可根据相应的项目在程序里选择用哪种脚本)。

 

 

 

 

总结:

DataGrid是我们常用的Web 控件,有时我们还可以和DataList混合使用,通过修改HTML页,可以达到好的页面效果。上面只是一个例子,为了便于清楚整个过程,我把数据访问部分(SQL)写到了页面中。在软件开发中,我们一般把访问数据的部分写成数据层,页面调用数据层得到数据,这样逻辑清晰,修改和维护都很方便。

 

‘***************************************************************

‘Author:  李洪根

‘MAIL:   lihonggen0@gci-corp.com

‘专栏:  http://www.youkuaiyun.com/develop/author/netauthor/lihonggen0/

‘如需引用,请指明出处! 优快云论坛VB版欢迎您!

‘***************************************************************

武汉理工大学 python实验三 请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔(假设鸡和兔都正常,无残疾),如无解则输出`“Data Error!题目为:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?年前,《孙子算经》中记载一个有趣的问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,已知共有。编写一个宝塔上的琉璃灯的小程序,计算并输出每层各有多少盏琉璃灯。,如果有多个解,则分行输出,每行一个解; 阅读详情

相关推荐

Windows MCP 安装教程:让 AI 代理与 Windows 系统无缝交互

通过以上步骤,你已经成功安装和配置了 Windows MCP 服务。现在你的 Cursor 编辑器可以通过 MCP 协议与 Windows 系统进行深度交互,AI 代理能够:启动和控制应用程序执行系统命令自动化 UI 操作获取系统状态信息这为 AI 辅助开发和工作流程自动化提供了强大的基础。如果你在使用过程中遇到任何问题,欢迎在评论区讨论或查看项目的官方文档。

chenchihwen的专栏 3350

拓展01-datagrid列排序功能

1、效果图 设置了排序的列出现一个上下三角 2、/employee/index.jsp支持 如图所示,将需要设置排序的列添加sortable="true"属性。 3、BaseQuery后台支持     下图可以看到,在我们发出排序请求时,传的参数为sort和order,这和我们在BaseQuery中设置的排序字段不一致,需要进行兼容设置。 //添加兼容属性代码 4、BaseQuery...

vivid9527的博客 613

electron打包客户端在rk3588上支持h265硬解

前言我们的客户端程序是用electron打包的前端程序,其在rk3588主机上的linux环境运行。之前使用客户端查看h264编码的视频直播是没有问题的,但视频源更改为h265编码后就不能查看了,奇怪的是打包的windows客户端则可以正常查看,另外rk3588主机上的chromium浏览器也是支持播放h265编码的视频的,并且是硬件解码。

lxkj_2024的博客 2007

使用datagrid 进行分页

先是页面 datagrid是easyui中的所以: 引入相关js与css body中写一个表格并给予一个ID (该ID是为了给datagrid用的) 使用的ajax请求获取的数据 var toolbar = [ { //工具栏 id : 'add', text : '增加', iconCls:'icon-add' },

ugly_birds的博客 1086

FPGA领域四大顶级会议全景解读:从架构到应用的技术风向标

本文全景解读FPGA领域四大顶级会议(FPGA、FCCM、FPL、FPT),剖析其各自定位与技术风向。FPGA会议聚焦架构与工具创新,FCCM专攻硬件加速与定制计算,FPL覆盖从理论到应用的广泛领域,FPT则重点关注亚太市场与前沿应用。跟踪这些会议是把握FPGA技术演进、寻找创新灵感和应用方案的高效途径。

weixin_29274969的博客 335

高云FPGA开发实战:手把手教你用ModelSim做功能仿真与时序分析(附Testbench写法)

本文详细介绍了高云FPGA开发中如何使用ModelSim进行功能仿真与时序分析,包括环境搭建、Testbench编写、波形调试和时序优化等实战技巧。通过具体案例和代码示例,帮助开发者掌握FPGA仿真验证的核心方法,提升设计可靠性。特别针对高云GW5A系列器件提供了专业的仿真库配置指南和时序分析策略。

weixin_30412167的博客 466

ASP.NET:DataGrid控件的分页功能

ASP.NET:DataGrid控件的分页功能

xuxiaoxia_88的专栏 983

基于STM32L4XX、HAL库的Ra-01SC-P LoRa模块驱动程序设计

0x22) { // SX1276/SX1278版本号。// 发射功率(2-20)// 工作频率(Hz)// 编码率(5-8)

zhusl6688的博客 425

[导入]让Asp.NET的DataGrid可排序、可选择、可分页

文章来源:http://blog.csdn.net/lihonggen0/archive/2004/05/17/13645.aspx

weixin_34310127的博客 77

【OpenClaw从入门到精通】第04篇:Web/TUI/钉钉全打通!OpenClaw多端交互实测指南(2026避坑版)

本文详解OpenClaw三大交互方式(Web控制台、TUI终端、钉钉集成),解决新手多端操作难题。Web控制台适合可视化深度配置,TUI终端满足服务器高效运维,钉钉集成实现移动办公协同。提供2026实测配置步骤、代码示例及避坑指南,涵盖设备配对、终端命令优化、聊天机器人回调验证等核心场景,助用户快速掌握"随时召唤AI助理"的全链路方案。 关键词 OpenClaw、多端交互、Web控制台、TUI终端、钉钉集成、AI助理、实操指南 核心亮点 全链路打通:覆盖Web/TIM/IM三端配置

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 3543

基于深度学习的异常检测实战:从自编码器到GAN

本文通过一个完整的实战案例,展示了如何使用自编码器和GAN进行异常检测。我们详细介绍了数据准备、模型定义、训练和评估的步骤,并提供了可运行的代码。希望本文能为读者在实际项目中应用异常检测技术提供实用的指导和启发。

Programming Talk 242
上一篇: .NET平台下WEB应用程序的部署(安装数据库和自动配置)
下一篇: 在.NET环境下操作MySQL数据库 -续
colderboy
博客等级 码龄26年 1粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值