【问题标题】:Sorted Datatable value differs in UI gridview in c#在 c# 中的 UI gridview 中排序的 Datatable 值不同
【发布时间】:2018-06-17 14:45:43
【问题描述】:

我有一个包含已排序列值的数据表,当我将它们绑定到 gridview 时,我无法在 gridview 中看到与数据表中相同的顺序。

gridview 中也禁用了排序事件。

谁能给点建议。

HTML:

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="true" ShowHeaderWhenEmpty="true" EmptyDataText="No Records Found" OnRowDataBound="GridView1_RowDataBound" AllowSorting="true" OnSorting="GridView1_Sorting"
                                OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="true" CellPadding="1" PageSize="200" AutoPostBack="true" AllowCustomPaging="true" ShowHeader="true"
                                CellSpacing="1" BackColor="#e7e7e8" BorderColor="#e7e7e8" GridLines="Both" CssClass="GridViewStyleB" Font-Names="Calibri" Font-Size="10pt">
                                <PagerSettings Mode="NumericFirstLast" PageButtonCount="4" FirstPageText="First" LastPageText="Last" Position="Top" Visible="true" />
                                <PagerStyle BackColor="#e7e7e8" ForeColor="Black" HorizontalAlign="left" />
                                <HeaderStyle CssClass="RowStyle" ForeColor="Black" BackColor="#a9a9a9" Font-Underline="false" HorizontalAlign="Left" />
                                <RowStyle CssClass="RowStyle" HorizontalAlign="Left" BorderColor="#E7E7E8" ForeColor="Black" />
                                <AlternatingRowStyle CssClass="AlternatingRowStyle" BorderColor="#E7E7E8" ForeColor="Black" BackColor="#e7e7e8" />
                                <EmptyDataRowStyle HorizontalAlign="Center" />
                            </asp:GridView>

代码:

 DataTable dtColumns = FromDataTable();
 GridView1.DataSource = dtColumns;
 GridView1.DataBind();

dtColumns datatable 已经对数据进行了排序,当我将它们绑定到 gridview 时,顺序会发生变化。

【问题讨论】:

  • 您能展示一下您是如何对数据表进行排序的吗?因为如果您不使用dtColumns.DefaultView.ToTable();,则不会提交排序。
  • @VDWWD - 我没有对来自 SQL 的数据进行排序,我需要按顺序显示值,就像我在数据表中的获取方式一样。仅供参考,如果我做错了什么,我没有使用任何排序来对数据表进行排序并纠正我。
  • 那么问题不在于GridView或DataTable。不排序 GridView 将显示与 DataTable 相同的顺序。也许 SQL 没有像您怀疑的那样排序,或者您也在使用 jQuery 库进行客户端排序?
  • @VDWWD - 数据表具有正确的排序行,我只需要在 gridview 中显示相同的行。数据表已排序数据。

标签: c# asp.net .net gridview


【解决方案1】:

如果在 GridView1.DataSource = dtColumns 处插入断点,并检查 dtColumns 对象,是否可以确认行的排序顺序?用于选择数据的基础查询是什么?如果是单表,主键是什么数据类型?

我认为如果您检查这些内容,您会找到答案,但如果没有,您应该更新您的帖子以包含这些内容:)

编辑

在执行数据绑定后,您可以尝试强制排序:

GridView1.Sort("column name", System.Web.UI.WebControls.SortDirection.Descending); 

【讨论】:

  • dtColumns 数据表有正确的排序数据,我只需要在 gridview 中显示相同的顺序。我正在使用 SQL 对记录进行排序。
  • 你能在你的ASPX页面中显示你用来声明gridview的标记吗?
  • 谢谢。您的 onSorting 或 onRowDataBound 方法中有什么内容吗?另外,如果你创建一个新的数据网格,只设置最少的属性(只有一个 ID、runat=server 和自动生成列),你会得到什么不同吗?
  • onSorting 或 onRowDataBound 方法内部都没有任何代码。我还尝试了使用 ID、runat=server 和自动生成列,但仍然相同。
  • 好的,这个怎么样 :) 而不是查看网格中的数据...为了测试目的,循环遍历数据表并响应。写出每一行的值。它们是按顺序写的吗?此外,如果您指定每一列(使用 boudnColumns)而不是自动生成列,该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多