首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用vb.net对GRIDVIEW表(无数据源)进行排序

如何用vb.net对GRIDVIEW表(无数据源)进行排序
EN

Stack Overflow用户
提问于 2020-01-23 22:43:06
回答 3查看 58关注 0票数 0

我自己创建gridview,没有连接到数据库。

代码语言:javascript
复制
<asp:GridView ID="GridView3" runat="server" AllowSorting="True">
   <Columns>
      <asp:BoundField HeaderText="Dene1" SortExpression="Dene1" > </asp:BoundField>
      <asp:BoundField HeaderText="Dene2" SortExpression="Dene2" > </asp:BoundField>
   </Columns>
</asp:GridView>

Protected Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Dim number As New System.Random()
    Dim dt As New DataTable()
    Dim dr As DataRow = Nothing

    For i = 0 To Val(TextBox1.Text)
        dr = dt.NewRow()
        dt.Rows.Add(dr)
    Next
    GridView3.DataSource = dt
    GridView3.DataBind()

    For i = 0 To Val(TextBox1.Text)
        GridView3.Rows(i).Cells(0).Text = number.Next(0, 10)
        GridView3.Rows(i).Cells(1).Text = number.Next(10, 20)
    Next
End Sub

我想对任何列进行排序。

代码语言:javascript
复制
Private Sub GridView3_Sorting(sender As Object, e As GridViewSortEventArgs) Handles GridView3.Sorting
    Dim dt As New DataTable("GridView3")
    Dim view As New DataView(dt)

    view.Sort = String.Format(“{0} {1}”, "Dene1", "ASC") 'alternative-1
    view.Sort = "Dene1 ASC"                              'alternative-2
    dt.DefaultView.Sort = "Dene1 ASC"                    'alternative-3

    GridView3.DataBind()
End Sub

所有替代方案都不起作用。错误信息是"can‘t find column "Dene1“。我该如何解决这个问题,或者如何对gridview表进行排序?

EN

回答 3

Stack Overflow用户

发布于 2020-01-23 23:00:10

您需要为数据表列指定一个名称:

代码语言:javascript
复制
Dim dt As New DataTable()
....
....
dt.Columns[0].ColumnName = "Dene1"
票数 0
EN

Stack Overflow用户

发布于 2020-01-24 00:30:24

根据JustinHui的回答,数据表将需要具有名称的列,但是我还注意到了其他一些事情。

代码语言:javascript
复制
Private Sub GridView3_Sorting(sender As Object, e As GridViewSortEventArgs) Handles GridView3.Sorting
    Dim dt As New DataTable("GridView3")
    Dim view As New DataView(dt)

    view.Sort = String.Format(“{0} {1}”, "Dene1", "ASC") 'alternative-1
    view.Sort = "Dene1 ASC"                              'alternative-2
    dt.DefaultView.Sort = "Dene1 ASC"                    'alternative-3
    Gridview3.DataSource = dt.DefaultView
    GridView3.DataBind()
End Sub

当然你需要添加数据网格的数据源,否则你绑定的是什么?你好像错过了。

代码语言:javascript
复制
Gridview3.DataSource = dt.DefaultView
票数 0
EN

Stack Overflow用户

发布于 2020-01-24 08:53:50

我认为您遗漏了DataField属性。下面是我的设计器代码,来自一个类似的实现。

代码语言:javascript
复制
<asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
    runat="server" AutoGenerateColumns="false" > 
    <Columns>
        <asp:BoundField DataField="Id" HeaderText="Id" ItemStyle-Width="30"/>
        <asp:BoundField DataField="Name" HeaderText="Name"  ItemStyle-Width="150"/>
        <asp:BoundField DataField="Country" HeaderText="Country" ItemStyle-Width ="150"/>
    </Columns>
</asp:GridView>

然后在后面的代码中。

代码语言:javascript
复制
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    Dim dt As New DataTable()
    dt.Columns.AddRange(New DataColumn() {New DataColumn("Id", GetType(Integer)), New DataColumn("Name", GetType(String)), New DataColumn("Country", GetType(String))})
    dt.Rows.Add(1, "John Hammond", "United States")
    dt.Rows.Add(2, "Mudassar Khan", "India")
    dt.Rows.Add(3, "Suzanne Mathews", "France")
    dt.Rows.Add(4, "Robert Schidner", "Russia")
    GridView1.DataSource = dt
    GridView1.DataBind()
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59881119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档