我自己创建gridview,没有连接到数据库。
<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我想对任何列进行排序。
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表进行排序?
发布于 2020-01-23 23:00:10
您需要为数据表列指定一个名称:
Dim dt As New DataTable()
....
....
dt.Columns[0].ColumnName = "Dene1"发布于 2020-01-24 00:30:24
根据JustinHui的回答,数据表将需要具有名称的列,但是我还注意到了其他一些事情。
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当然你需要添加数据网格的数据源,否则你绑定的是什么?你好像错过了。
Gridview3.DataSource = dt.DefaultView发布于 2020-01-24 08:53:50
我认为您遗漏了DataField属性。下面是我的设计器代码,来自一个类似的实现。
<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>然后在后面的代码中。
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 Subhttps://stackoverflow.com/questions/59881119
复制相似问题