C# 窗体的DataGridView分页

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 窗体的DataGridView分页相关的知识,希望对你有一定的参考价值。

囧,是窗体,没有内置方法,如果可以的话,最好给一个demo 谢谢了
是窗体~文艺点就是winform……

参考技术A 这个其实都一样的,你只要了解分页的原理,就能知道怎么做的
分页无非是内存分页,和数据库分页
前者是一次性读取所有数据,然后根据页码来显示不同数据到页面上,实质上所有数据都能加载出来。
后者是根据页码和每页记录数,每次读取数据库,都读取指定条数位置的数据,然后加载到页面。
这样的话,你使用一些dll控件,当然web和winfom一样的,web因为有内置控件,所以你可能了解不是全面。
winform 是搜一下,NetPager之类名称的分页控件dll ,然后直接添加到工具箱,然后你看看它的事件,设置下属性什么的,就可以内存分页了。
参考技术B http://www.cnblogs.com/kevin-top/archive/2010/01/05/1639448.html
这个你看看,我用这个做好的,有一点提示下,上面他的BindingNavigate控件没有什么对分页有具体作用的本回答被提问者采纳
参考技术C

COM.WYP.DB是数据库文件 你附加进去就可以

改下DAL里面的SqlHelper.cs的数据库连接

这样就能运行了

追问

是窗体啊亲~

追答

好吧

在 C# 中对 dataGridView 列进行排序? (Windows 窗体)

【中文标题】在 C# 中对 dataGridView 列进行排序? (Windows 窗体)【英文标题】:Sort dataGridView columns in C# ? (Windows Form) 【发布时间】:2010-10-22 20:18:25 【问题描述】:

我有一个从 sql 表绑定的 datagridview,在该 dv 中我有这些属性:Id、Name 和 Price。当我将名称列的 SortMode 设置为自动并单击此列的标题时,我可以根据名称的第一个字母对该 dv 进行排序,这样我可以根据产品的第一个字母(Acumulator、Boat、可口可乐、发动机等)。

有没有办法在不单击列名称的情况下发生这种情况。我正在寻找一些可以在表单加载时完成这项工作的代码。

【问题讨论】:

答案是:this.dataGridView1.Sort(this.dataGridView1.Columns["Name"],ListSortDirection.Ascending); olumnheader 点击 c# datagridview 【参考方案1】:

DataGridView 上有一个名为“Sort”的方法:

this.dataGridView1.Sort(this.dataGridView1.Columns["Name"], ListSortDirection.Ascending);

这将以编程方式对您的 datagridview 进行排序。

【讨论】:

排序消耗的时间怎么样,他想在负载中排序,那么在执行SQL语句而不是绑定之后排序呢!我认为它会消耗更多时间 是的,Ahmy 是对的,就性能而言,最好在数据库端对其进行排序。因此,如果您使用 SQL 直接与数据库交互,请在查询末尾附加一个 order by。我只是在回答问题。这是在代码中对 DGV 进行排序的方法。 好的,如果 AXheladini 需要它,那没关系,但我从他的问题中了解到他在 UI 中不需要它,所以我想节省时间,我很高兴 AXheladini 找到了解决方案并且这就是我们希望从我们的答案中得到的结果 Ahme 你的解决方案没问题,但正如我告诉你的那样,我正在从 UI 填充这个网格,我没有用 c# 编码。顺便说一句,如果我们用代码完成所有这些工作,您的解决方案就可以工作。我试过了,但我需要的是 BFree 的答案。感谢所有试图回答这个问题的人。【参考方案2】:
dataGridView1.Sort(dataGridView1.Columns[0],ListSortDirection.Ascending);

【讨论】:

我同意使用数字索引比使用字符串索引更好,因为如果您将来更改列名,您也必须更改字符串索引。【参考方案3】:

这个比较简单:)

dataview dataview1; 
this.dataview1= dataset.tables[0].defaultview;
this.dataview1.sort = "[ColumnName] ASC, [ColumnName] DESC";
this.datagridview.datasource = dataview1;

【讨论】:

【参考方案4】:

您可以通过对返回的数据进行排序来控制从 SQL 数据库返回的数据:

orderby [Name]

如果您从应用程序执行 SQL 查询,请对返回的数据进行排序。例如,创建一个调用过程或执行 SQL 的函数,并给它一个获取 orderby 条件的参数。因为如果您对从数据库返回的数据进行排序,它将消耗时间,但由于它是按照您所说的那样执行而不是从 UI 中排序的,因此您希望在运行时对其进行排序,因此在执行 SQL 时对其进行排序查询。

【讨论】:

我正在自动绑定 datagridview 我不使用查询。有没有办法访问数据源的查询并纠正这个问题? 我的意思是查询数据库并返回数据的SQL语句在你使用的过程中或在DAL层的SQL语句中添加语法orderby【参考方案5】:

最好的方法是在绑定数据源之前对列表进行排序。

cars = cars.OrderBy(o => o.year).ThenBy(o => o.color).ToList(); adgCars.DataSource = cars;

对不起,我的英语不好。

【讨论】:

【参考方案6】:

使用Datatable.Default.Sort属性,然后将其绑定到datagridview。

【讨论】:

【参考方案7】:

我知道这个问题的 2 个解决方案。

1.排序(DataGridViewColumn 列,ListSortDirection 方向)函数

此函数可用于按字母或数字或日期的降序或升序对列进行排序。

示例:

dataGridView.Sort(dataGridView1.Columns[5],ListSortDirection.Ascending);

2。排序(IComparer 比较器)函数

此功能可用于所有其他情况

以不同于数字顺序的特定顺序对列进行排序(例如:仅使用绝对值对可以为负数或正数的金额进行排序)

以不同于字母顺序的特定顺序对列进行排序(例如:使用不区分大小写的排序对文本进行排序)

将多个列排序为使用 AMOUNT 列作为第一列和 DATE 列作为第二列的表排序。

VB.Net 示例:

Private Sub pbSort_Click(sender As Object, e As EventArgs) _ 
    Handles pbSort.Click

    grid.Sort(New AmountDateComparer(Me))
End Sub

Private Class AmountDateComparer : Implements IComparer

    Private frm As FrmSearch

    Public Sub New(frm As FrmSearch)
        Me.frm = frm
    End Sub

    Public Function Compare(x1 As Object, x2 As Object) As Integer _
        Implements IComparer.Compare

        Dim row1 As DataGridViewRow = x1
        Dim row2 As DataGridViewRow = x2

        ' compare AMOUNT values of columns

        Dim nAmount1 = Convert.ToDecimal(row1.Cells(frm.Col_AMOUNT.Index).Value)
        Dim nAmount2 = Convert.ToDecimal(row2.Cells(frm.Col_AMOUNT.Index).Value)

        Dim iCompareResult As Integer 
            = System.Decimal.Compare(nAmount1, nAmount2)

        If iCompareResult = 0 Then
            'compare DATE values of columns
            Dim d1 = Convert.ToDateTime(row1.Cells(frm.Col_DATE.Index).Value)
            Dim d2 = Convert.ToDateTime(row2.Cells(frm.Col_DATE.Index).Value)

            iCompareResult = System.DateTime.Compare(d1, d2)
        End If

        Return iCompareResult
    End Function
End Class

【讨论】:

以上是关于C# 窗体的DataGridView分页的主要内容,如果未能解决你的问题,请参考以下文章

C# datagridviewdatagridGridControl增加行号

c# winform A 窗体 datagridview1,B窗体datagridview2,如何把datagridview1中显示的数据全部复制到B中

勾选复选框时如何在DataGridView中执行计算C#

如何在 c# 中禁用可点击的 datagridview 中的空单元格

在 C# 中对 dataGridView 列进行排序? (Windows 窗体)

使用 C# Windows 窗体中 SQL 查询的大量结果填充 dataGridView