質問編集履歴
5
並べ替えが機能したコードを追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,6 +26,12 @@
|
|
26
26
|
|
27
27
|
追記です。
|
28
28
|
|
29
|
+
使用した並べ替え対象のデータ
|
30
|
+
|
31
|
+
![使用した並べ替え対象のデータ](2e5c0929ddd395973a3674ae3938cd80.jpeg)
|
32
|
+
|
33
|
+
|
34
|
+
|
29
35
|
test.aspx
|
30
36
|
|
31
37
|
```aspx
|
4
pageloadの記載漏れのため修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
```aspx
|
32
32
|
|
33
|
-
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="sorttest.aspx.vb" Inherits="
|
33
|
+
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="sorttest.aspx.vb" Inherits="test.sorttest" %>
|
34
34
|
|
35
35
|
|
36
36
|
|
3
pageloadの記載漏れのため修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,39 +28,111 @@
|
|
28
28
|
|
29
29
|
test.aspx
|
30
30
|
|
31
|
-
```
|
32
|
-
|
33
|
-
<a
|
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
|
-
|
31
|
+
```aspx
|
32
|
+
|
33
|
+
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="sorttest.aspx.vb" Inherits="pythontest.sorttest" %>
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
<!DOCTYPE html>
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
42
|
+
|
43
|
+
<head runat="server">
|
44
|
+
|
45
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
46
|
+
|
47
|
+
<title></title>
|
48
|
+
|
49
|
+
<style type="text/css">
|
50
|
+
|
51
|
+
th.sortedAscHeader,
|
52
|
+
|
53
|
+
th.sortedDscHeader {
|
54
|
+
|
55
|
+
background-repeat: no-repeat;
|
56
|
+
|
57
|
+
background-position: right;
|
58
|
+
|
59
|
+
padding-right:18px;
|
60
|
+
|
61
|
+
}
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
th.sortedAscHeader {
|
66
|
+
|
67
|
+
background-image: url(Images/arrow-up.png);
|
68
|
+
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
th.sortedDscHeader {
|
74
|
+
|
75
|
+
background-image: url(Images/arrow-down.png);
|
76
|
+
|
77
|
+
}
|
78
|
+
|
79
|
+
</style>
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
</head>
|
84
|
+
|
85
|
+
<body>
|
86
|
+
|
87
|
+
<form id="form1" runat="server">
|
88
|
+
|
89
|
+
<div>
|
90
|
+
|
91
|
+
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
|
92
|
+
|
93
|
+
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" OnSorting="onsorting" PageSize="60" DataKeyNames="フィールドA">
|
94
|
+
|
95
|
+
<Columns>
|
96
|
+
|
97
|
+
<asp:CommandField ShowSelectButton="True" />
|
98
|
+
|
99
|
+
<asp:BoundField DataField="フィールドA" HeaderText="フィールドA" SortExpression="フィールドA" />
|
100
|
+
|
101
|
+
<asp:BoundField DataField="フィールドB" HeaderText="フィールドB" SortExpression="フィールドB" />
|
102
|
+
|
103
|
+
<asp:BoundField DataField="フィールドC" HeaderText="フィールドC" SortExpression="フィールドC" />
|
104
|
+
|
105
|
+
</Columns>
|
106
|
+
|
107
|
+
<SortedAscendingHeaderStyle CssClass="sortedAscHeader" BackColor="#FFCCFF" />
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
<SortedDescendingHeaderStyle CssClass="sortedDscHeader" BackColor="#99CCFF" />
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
</asp:GridView>
|
118
|
+
|
119
|
+
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString3 %>" ProviderName="<%$ ConnectionStrings:ConnectionString3.ProviderName %>" SelectCommand="SELECT * FROM [sorttest]"></asp:SqlDataSource>
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
<asp:HiddenField ID="hiddenselectcommand" runat="server" />
|
124
|
+
|
125
|
+
<br />
|
126
|
+
|
127
|
+
<br />
|
128
|
+
|
129
|
+
</div>
|
130
|
+
|
131
|
+
</form>
|
132
|
+
|
133
|
+
</body>
|
134
|
+
|
135
|
+
</html>
|
64
136
|
|
65
137
|
|
66
138
|
|
@@ -74,7 +146,25 @@
|
|
74
146
|
|
75
147
|
|
76
148
|
|
149
|
+
Public Class sorttest
|
150
|
+
|
151
|
+
Inherits System.Web.UI.Page
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
|
156
|
+
|
157
|
+
SqlDataSource1.SelectCommand = "Select * FROM [sorttest]" & hiddenselectcommand.Value
|
158
|
+
|
159
|
+
|
160
|
+
|
161
|
+
End Sub
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
|
166
|
+
|
77
|
-
Protected Sub OnSort
|
167
|
+
Protected Sub OnSorting(sender As Object, e As GridViewSortEventArgs) Handles GridView1.Sorting
|
78
168
|
|
79
169
|
|
80
170
|
|
@@ -86,6 +176,8 @@
|
|
86
176
|
|
87
177
|
|
88
178
|
|
179
|
+
|
180
|
+
|
89
181
|
If selectcommandstr.IndexOf("ASC") <> -1 Then
|
90
182
|
|
91
183
|
direction = "DESC"
|
@@ -96,23 +188,59 @@
|
|
96
188
|
|
97
189
|
End If
|
98
190
|
|
99
|
-
|
100
|
-
|
101
191
|
If selectcommandstr.IndexOf("order") <> -1 Then selectcommandstr = selectcommandstr.Remove(selectcommandstr.IndexOf("order"))
|
102
192
|
|
103
193
|
selectcommandstr = selectcommandstr & " order by IsNumeric([" & field & "]), Val([" & field & "]) " & direction & ", [" & field & "] " & direction & ""
|
104
194
|
|
105
195
|
|
106
196
|
|
197
|
+
|
198
|
+
|
107
199
|
SqlDataSource1.SelectCommand = selectcommandstr
|
108
200
|
|
109
201
|
|
110
202
|
|
203
|
+
If selectcommandstr.IndexOf("where") <> -1 Then
|
204
|
+
|
205
|
+
selectcommandstr = selectcommandstr.Remove(0, selectcommandstr.IndexOf("where"))
|
206
|
+
|
207
|
+
Else
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
If selectcommandstr.IndexOf("order") <> -1 Then
|
212
|
+
|
213
|
+
selectcommandstr = selectcommandstr.Remove(0, selectcommandstr.IndexOf("order"))
|
214
|
+
|
215
|
+
Else
|
216
|
+
|
217
|
+
selectcommandstr = ""
|
218
|
+
|
219
|
+
End If
|
220
|
+
|
221
|
+
End If
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
hiddenselectcommand.Value = selectcommandstr
|
226
|
+
|
227
|
+
|
228
|
+
|
111
229
|
e.Cancel = True
|
112
230
|
|
113
231
|
|
114
232
|
|
115
|
-
End Sub
|
233
|
+
End Sub
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
Protected Sub GridView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GridView1.SelectedIndexChanged
|
238
|
+
|
239
|
+
TextBox1.Text = GridView1.SelectedValue.ToString
|
240
|
+
|
241
|
+
End Sub
|
242
|
+
|
243
|
+
End Class
|
116
244
|
|
117
245
|
|
118
246
|
|
2
asp:SqlDataSource が記載漏れだったため、修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -57,6 +57,12 @@
|
|
57
57
|
<SortedDescendingHeaderStyle CssClass="sortedDscHeader" BackColor="#99CCFF" />
|
58
58
|
|
59
59
|
</asp:GridView>
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [datasheet] WHERE ([フィールドa] <> '') ORDER BY [フィールドa] ASC"/>
|
64
|
+
|
65
|
+
|
60
66
|
|
61
67
|
|
62
68
|
|
1
並べ替えが機能したコードを追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -21,3 +21,117 @@
|
|
21
21
|
|
22
22
|
|
23
23
|
となるようにするにはどのようにすればよいでしょうか?
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
追記です。
|
28
|
+
|
29
|
+
test.aspx
|
30
|
+
|
31
|
+
```HTML
|
32
|
+
|
33
|
+
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="フィールドa" AllowSorting="True" AllowCustomPaging="True" OnSorting="OnSorted" >
|
34
|
+
|
35
|
+
<Columns>
|
36
|
+
|
37
|
+
<asp:ButtonField ButtonType="Button" CommandName="select" HeaderText="選択" Text="選択">
|
38
|
+
|
39
|
+
</asp:ButtonField>
|
40
|
+
|
41
|
+
<asp:BoundField DataField="フィールドa" HeaderText="フィールドa" SortExpression="フィールドa" />
|
42
|
+
|
43
|
+
<asp:ImageField DataImageUrlField="フィールドa" DataImageUrlFormatString="./test/images/{0}.png" HeaderText="イメージ">
|
44
|
+
|
45
|
+
</asp:ImageField>
|
46
|
+
|
47
|
+
<asp:BoundField DataField="フィールドb" HeaderText="フィールドb" SortExpression="フィールドb" />
|
48
|
+
|
49
|
+
<asp:BoundField DataField="フィールドc" HeaderText="フィールドc" SortExpression="フィールドc" />
|
50
|
+
|
51
|
+
<asp:BoundField DataField="フィールドd" HeaderText="フィールドd" SortExpression="フィールドd" />
|
52
|
+
|
53
|
+
</Columns>
|
54
|
+
|
55
|
+
<SortedAscendingHeaderStyle CssClass="sortedAscHeader" BackColor="#FFCCFF" />
|
56
|
+
|
57
|
+
<SortedDescendingHeaderStyle CssClass="sortedDscHeader" BackColor="#99CCFF" />
|
58
|
+
|
59
|
+
</asp:GridView>
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
```
|
64
|
+
|
65
|
+
test.aspx.vb
|
66
|
+
|
67
|
+
```VB
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
Protected Sub OnSorted(sender As Object, e As GridViewSortEventArgs) Handles GridView1.Sorting
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
Dim field As String = e.SortExpression
|
76
|
+
|
77
|
+
Dim direction As String
|
78
|
+
|
79
|
+
Dim selectcommandstr As String = SqlDataSource1.SelectCommand
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
If selectcommandstr.IndexOf("ASC") <> -1 Then
|
84
|
+
|
85
|
+
direction = "DESC"
|
86
|
+
|
87
|
+
Else
|
88
|
+
|
89
|
+
direction = "ASC"
|
90
|
+
|
91
|
+
End If
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
If selectcommandstr.IndexOf("order") <> -1 Then selectcommandstr = selectcommandstr.Remove(selectcommandstr.IndexOf("order"))
|
96
|
+
|
97
|
+
selectcommandstr = selectcommandstr & " order by IsNumeric([" & field & "]), Val([" & field & "]) " & direction & ", [" & field & "] " & direction & ""
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
SqlDataSource1.SelectCommand = selectcommandstr
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
e.Cancel = True
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
End Sub
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
```
|
114
|
+
|
115
|
+
|
116
|
+
|
117
|
+
上記とすることで、gridviewのヘッダーをクリックするたびに昇順降順を切り替えて
|
118
|
+
|
119
|
+
昇順
|
120
|
+
|
121
|
+
1→2→10→20→30→あい→うえお
|
122
|
+
|
123
|
+
降順
|
124
|
+
|
125
|
+
30→20→10→2→1→うえお→あい
|
126
|
+
|
127
|
+
と並び替えられるようになりました、が、
|
128
|
+
|
129
|
+
e.cancelとしていることでgridviewの機能としては並び替わったことにならないため、SortedAscendingHeaderStyleが反映されなくなってしまいました。
|
130
|
+
|
131
|
+
できれば並び替わっている列とその向きがわかるようにしたいのですが、gridviewのsortイベントを介さずにgiridviewに現在並び替えられているフィールドとその向きを設定するなどして、すでに並び替わったことに出来ないでしょうか。
|
132
|
+
|
133
|
+
gridview.SortDirectionを書き換えようとしてみましたが、readonlyのため無理なようでした。
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
追加ですみませんが、ご存知の方がいらっしゃいましたら教えて下さい。
|