Ik zou graag mijn datagrdi kunnen sorten op zelf gekozen kolommen
na een beetje googlen vond ik al snel 10 tallen sites die dit duidelijk uitleggen...
Het blijkt ook alles behalve moeilijk te zijn
in datagrid AllowSorting="True" en OnSortCommand="DG_sort" instellen,
en de programmacode mijn DataSet aan een DataView kopellen en daar de Sort property instellen
vervolgens die DataView als source van de DataGrid gebruiken en ff DataBind() aanroepen, en het zou allemaal al moeten werken...
MAAR
dat doet het dus niet...
Na nog vele sites verder te googlen en vele keren mijn eigen code na te kijken, wordt er nog steeds NIETS gesorteerd...
Ik snap dan ook niet meer waar het aan kan liggen
hieronder volgt de code:
en
Hopelijk ziet iemand mijn waarschijnlijk domme fout... aangezien dit eigelijk echt niet zo moeilijk is en op vele sites duidelijk beschreven wordt dat het zo zou moeten werken...
Bij voorbaat dank..
na een beetje googlen vond ik al snel 10 tallen sites die dit duidelijk uitleggen...
Het blijkt ook alles behalve moeilijk te zijn
in datagrid AllowSorting="True" en OnSortCommand="DG_sort" instellen,
en de programmacode mijn DataSet aan een DataView kopellen en daar de Sort property instellen
vervolgens die DataView als source van de DataGrid gebruiken en ff DataBind() aanroepen, en het zou allemaal al moeten werken...
MAAR
dat doet het dus niet...
Na nog vele sites verder te googlen en vele keren mijn eigen code na te kijken, wordt er nog steeds NIETS gesorteerd...
Ik snap dan ook niet meer waar het aan kan liggen
hieronder volgt de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
| Public Class afdelingeditor
Inherits System.Web.UI.UserControl
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.Connection = New System.Data.SqlClient.SqlConnection
Me.DataAdapter = New System.Data.SqlClient.SqlDataAdapter
Me.DeleteCommand = New System.Data.SqlClient.SqlCommand
Me.InsertCommand = New System.Data.SqlClient.SqlCommand
Me.SelectCommand = New System.Data.SqlClient.SqlCommand
Me.UpdateCommand = New System.Data.SqlClient.SqlCommand
Me.DataSet = New System.Data.DataSet
Me.DataTable = New System.Data.DataTable
Me.DataView = New System.Data.DataView
CType(Me.DataSet, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DataTable, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DataView, System.ComponentModel.ISupportInitialize).BeginInit()
'
'Connection
'
Me.Connection.ConnectionString = "server=SHAREPOINT;Database=Intranet;uid=sa;pwd=VAB7vtb5$"
'
'DataAdapter
'
Me.DataAdapter.DeleteCommand = Me.DeleteCommand
Me.DataAdapter.InsertCommand = Me.InsertCommand
Me.DataAdapter.SelectCommand = Me.SelectCommand
Me.DataAdapter.TableMappings.AddRange(New System.Data.Common.DataTableMapping() {New System.Data.Common.DataTableMapping("Table", "Afdelingen", New System.Data.Common.DataColumnMapping() {New System.Data.Common.DataColumnMapping("afdelingid", "afdelingid"), New System.Data.Common.DataColumnMapping("naam", "naam"), New System.Data.Common.DataColumnMapping("omschrijving", "omschrijving"), New System.Data.Common.DataColumnMapping("url", "url")})})
Me.DataAdapter.UpdateCommand = Me.UpdateCommand
'
'DeleteCommand
'
Me.DeleteCommand.CommandText = "DELETE FROM Afdelingen WHERE (afdelingid = @Original_afdelingid) AND (naam = @Ori" & _
"ginal_naam) AND (url = @Original_url)"
Me.DeleteCommand.Connection = Me.Connection
Me.DeleteCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_afdelingid", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "afdelingid", System.Data.DataRowVersion.Original, Nothing))
Me.DeleteCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_naam", System.Data.SqlDbType.VarChar, 100, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "naam", System.Data.DataRowVersion.Original, Nothing))
Me.DeleteCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@Original_url", System.Data.SqlDbType.VarChar, 100, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "url", System.Data.DataRowVersion.Original, Nothing))
'
'InsertCommand
'
Me.InsertCommand.CommandText = "INSERT INTO Afdelingen(naam, omschrijving, url) VALUES (@naam, @omschrijving, @ur" & _
"l); SELECT naam, omschrijving, url, afdelingid FROM Afdelingen WHERE (afdelingid" & _
" = @@IDENTITY)"
Me.InsertCommand.Connection = Me.Connection
Me.InsertCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@naam", System.Data.SqlDbType.VarChar, 100, "naam"))
Me.InsertCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@omschrijving", System.Data.SqlDbType.VarChar, 2147483647, "omschrijving"))
Me.InsertCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@url", System.Data.SqlDbType.VarChar, 100, "url"))
'
'SelectCommand
'
Me.SelectCommand.CommandText = "SELECT afdelingid, naam, omschrijving, url FROM Afdelingen"
' Me.SelectCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@sortkol", System.Data.SqlDbType.VarChar, 20, "sortkol"))
Me.SelectCommand.Connection = Me.Connection
'
'UpdateCommand
'
Me.UpdateCommand.CommandText = "UPDATE Afdelingen SET naam = @naam, omschrijving = @omschrijving, url = @url WHER" & _
"E (afdelingid = @afdelingid); SELECT naam, omschrijving, url, afdelingid FROM Af" & _
"delingen WHERE (afdelingid = @afdelingid)"
Me.UpdateCommand.Connection = Me.Connection
Me.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@afdelingid", System.Data.SqlDbType.Int, 4, "afdelingid"))
Me.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@naam", System.Data.SqlDbType.VarChar, 100, "naam"))
Me.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@omschrijving", System.Data.SqlDbType.VarChar, 2147483647, "omschrijving"))
Me.UpdateCommand.Parameters.Add(New System.Data.SqlClient.SqlParameter("@url", System.Data.SqlDbType.VarChar, 100, "url"))
'
'DataSet
'
Me.DataSet.DataSetName = "NewDataSet"
Me.DataSet.Locale = New System.Globalization.CultureInfo("nl-BE")
Me.DataSet.Tables.AddRange(New System.Data.DataTable() {Me.DataTable})
'
'DataTable
'
Me.DataTable.TableName = "afdelingen"
'
'DataView
'
Me.DataView.Table = Me.DataTable
CType(Me.DataSet, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DataTable, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DataView, System.ComponentModel.ISupportInitialize).EndInit()
End Sub
Protected WithEvents SelectCommand As System.Data.SqlClient.SqlCommand
Protected WithEvents InsertCommand As System.Data.SqlClient.SqlCommand
Protected WithEvents UpdateCommand As System.Data.SqlClient.SqlCommand
Protected WithEvents DeleteCommand As System.Data.SqlClient.SqlCommand
Protected WithEvents DataAdapter As System.Data.SqlClient.SqlDataAdapter
Protected WithEvents Connection As System.Data.SqlClient.SqlConnection
Protected WithEvents DataSet As System.Data.DataSet
Protected WithEvents DataGrid As System.Web.UI.WebControls.DataGrid
Protected WithEvents DataTable As System.Data.DataTable
Protected WithEvents DataView As System.Data.DataView
'NOTE: The following placeholder declaration is required by the Web Form Designer.
'Do not delete or move it.
Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Not IsPostBack Then
BindGrid("naam")
End If
End Sub
Public Sub DG_Edit(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
DataGrid.EditItemIndex = e.Item.ItemIndex
BindGrid("naam")
End Sub
Public Sub DG_Cancel(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
DataGrid.EditItemIndex = -1
BindGrid("naam")
End Sub
Public Sub DG_Update(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
Dim tb_omschrijving As TextBox = e.Item.Cells(3).Controls(0)
Dim tb_url As TextBox = e.Item.Cells(4).Controls(0)
Dim afdelingid As Integer = CInt(e.Item.Cells(1).Text)
Dim naam As String = e.Item.Cells(2).Text
Dim omschrijving As String = tb_omschrijving.Text
Dim url As String = tb_url.Text
Me.UpdateCommand.Parameters("@afdelingid").Value() = afdelingid
Me.UpdateCommand.Parameters("@naam").Value() = naam
Me.UpdateCommand.Parameters("@omschrijving").Value() = omschrijving
Me.UpdateCommand.Parameters("@url").Value() = url
Connection.Open()
Me.UpdateCommand.ExecuteNonQuery()
Connection.Close()
DataGrid.EditItemIndex = -1
BindGrid("naam")
End Sub
Public Sub DG_sort(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs)
BindGrid(e.SortExpression)
End Sub
Sub BindGrid(ByVal SortField As String)
' Me.SelectCommand.Parameters("@sortkol").Value() = SortField
DataAdapter.Fill(DataSet, "Afdelingen")
Dim source As DataView = New DataView(DataSet.Tables("Afdelingen"))
source.Sort = SortField & " ASC"
DataGrid.DataSource = source
DataGrid.DataBind()
End Sub
End Class |
en
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <%@ Control Language="vb" AutoEventWireup="false" Codebehind="afdelingeditor.ascx.vb" Inherits="afdelingeditor.afdelingeditor" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<asp:DataGrid id=DataGrid runat="server" DataSource="<%# DataSet %>" AllowSorting="True"
BorderColor="#999999" BorderStyle="None" BorderWidth="1px" BackColor="White" CellPadding="3"
GridLines="Vertical" OnEditCommand="DG_Edit" OnCancelCommand="DG_Cancel" OnUpdateCommand="DG_Update"
AutoGenerateColumns="False" DataKeyField="afdelingid" OnSortCommand="DG_sort">
<FooterStyle ForeColor="Black" BackColor="#CCCCCC"></FooterStyle>
<SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#008A8C"></SelectedItemStyle>
<AlternatingItemStyle BackColor="Gainsboro"></AlternatingItemStyle>
<ItemStyle ForeColor="Black" BackColor="#EEEEEE"></ItemStyle>
<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#000084"></HeaderStyle>
<Columns>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" CancelText="Cancel" EditText="Edit"></asp:EditCommandColumn>
<asp:BoundColumn HeaderText="Afdeling ID" SortExpression="afdelingid" ReadOnly="True" DataField="afdelingid" Visible="False"/>
<asp:BoundColumn HeaderText="Naam" SortExpression="naam" ReadOnly="True" DataField="naam" Visible="True"/>
<asp:BoundColumn HeaderText="Omschrijving" SortExpression="omschrijving" ReadOnly="false" DataField="omschrijving" Visible="True"/>
<asp:BoundColumn HeaderText="Url" SortExpression="url" ReadOnly="false" DataField="url" Visible="True"/>
</Columns>
<PagerStyle HorizontalAlign="Center" ForeColor="Black" BackColor="#999999" Mode="NumericPages"></PagerStyle>
</asp:DataGrid> |
Hopelijk ziet iemand mijn waarschijnlijk domme fout... aangezien dit eigelijk echt niet zo moeilijk is en op vele sites duidelijk beschreven wordt dat het zo zou moeten werken...
Bij voorbaat dank..