|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
WebDataGridSql версия 1.0 |
|
Дата:
|
30 June 2008 |
|
Описание: |
Этот элемент управления представляет из себя 1-ю версию редактора таблиц БД. Уже готова 2-я версия и на подходе 3-я. Публикую 1-ю версию для сравнения. Эту версию я отношу к средней сложности. Кстати, разобраться и повторить её Вы скорее всего не сможете - слишком сложно для понимания - нужна статья. Статью планирую написать. А пока можете использовать коды как образец программирования в стиле Микрософта. |
| |
Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения
следующую строку:
[CODEPOST ID=232]WebDataGridSql версия 1.0[/CODEPOST] |
| Оценить: |
|
1 REM DataGrid + дополнительный нумератор страниц + редактор; версия для SQL-сервера 2000 и выше. Стиль Microsoft, качество Max Pro, совместимость со всеми .NET фраймеворками, совместимость со всеми вэб-обозревателями.
2 Option Compare Text
3 Imports System
4 Imports System.Web
5 Imports System.Web.UI
6 Imports System.Web.UI.WebControls
7 Imports System.Drawing
8 Imports System.ComponentModel
9 Imports System.Data
10 Imports System.Data.SqlClient
11 ''' -----------------------------------------------------------------------------
12 ''' Project : WebControlLibrary
13 ''' Class : WebDataGridSql
14 '''
15 ''' -----------------------------------------------------------------------------
16 ''' <summary>
17 ''' DataGrid + дополнительный нумератор страниц + редактор; версия для SQL-сервера 2000 и выше.
18 ''' </summary>
19 ''' <remarks>
20 ''' </remarks>
21 ''' <history>
22 ''' [Max Pro] 30.04.2008 Created WebDataGridSql
23 ''' </history>
24 ''' -----------------------------------------------------------------------------
25 <ToolboxData("<{0}:WebDataGridSql runat=server></{0}:WebDataGridSql>"), ToolboxBitmap(GetType(Bitmap))> _
26 Public Class WebDataGridSql
27 Inherits DataGrid
28 Implements IPostBackEventHandler
29 #Region "var"
30 #Region "var нумератор страниц."
31 'top
32 Private oTextBoxTop As New TextBox 'текущая страница (верх)
33 Private oLabel1Top As New Label 'страницы: (верх)
34 Private oLabel2Top As New Label 'из 1000 (верх)
35 Private oImage1Top As New System.Web.UI.WebControls.Image '<< (верх)
36 Private oImage2Top As New System.Web.UI.WebControls.Image '< (верх)
37 Private oImage3Top As New System.Web.UI.WebControls.Image '> (верх)
38 Private oImage4Top As New System.Web.UI.WebControls.Image '>> (верх)
39 Private oTableTop As New Table 'верхняя строка состояния
40 'bottom
41 Private oTextBoxBottom As New TextBox 'текущая страница (низ)
42 Private oLabel1Bottom As New Label 'страницы: (низ)
43 Private oLabel2Bottom As New Label 'из 1000 (низ)
44 Private oImage1Bottom As New System.Web.UI.WebControls.Image '<< (низ)
45 Private oImage2Bottom As New System.Web.UI.WebControls.Image '< (низ)
46 Private oImage3Bottom As New System.Web.UI.WebControls.Image '> (низ)
47 Private oImage4Bottom As New System.Web.UI.WebControls.Image '>> (низ)
48 Private oTableBottom As New Table 'нижняя строка состояния
49 #End Region 'var нумератор страниц.
50 #Region "var редактор."
51 Private bErrArrayConfig As Boolean
52 Private bSetDataSource As Boolean
53 Private bChangeDataSource As Boolean
54 Private sArrayTextBoxEdit() As String
55 Private ddlName As New DropDownList 'наименование редактора и список наименований для перехода
56 'in
57 Private oImageSelectEditIn As New System.Web.UI.WebControls.Image 'треугольничек текущей записи ⊳ (внутри)
58 Private oImageEditEditIn As New System.Web.UI.WebControls.Image 'значок редактора (внутри)
59 Private oImageYesEditIn As New System.Web.UI.WebControls.Image 'запрос на обновление (внутри)
60 Private oImageNoEditIn As New System.Web.UI.WebControls.Image 'отмена (внутри)
61 'top
62 Private oLabelNameEditTop As New Label 'название панели редактора (верх)
63 Private oLabelEventEditTop As New Label 'метка последнего события (верх)
64 Private oTextBoxEventEditTop As New TextBox 'текст последнего события (верх)
65 Private oImageSelectEditTop As New System.Web.UI.WebControls.Image 'треугольничек текущей записи ⊳ (верх)
66 Private oImageEditEditTop As New System.Web.UI.WebControls.Image 'запрос на обновление (верх)
67 Private oImageDoubleEditTop As New System.Web.UI.WebControls.Image 'дублирование (верх)
68 Private oImageLoadEditTop As New System.Web.UI.WebControls.Image 'заливка (верх)
69 Private oImageClearEditTop As New System.Web.UI.WebControls.Image 'очистка (верх)
70 Private oImageDelEditTop As New System.Web.UI.WebControls.Image 'запрос на удаление (верх)
71 Private oImageNewEditTop As New System.Web.UI.WebControls.Image 'звёздочка новой записи ✴ (верх)
72 Private oImageAddEditTop As New System.Web.UI.WebControls.Image 'запрос на добавление (верх)
73 Private oArrayLabelEditTop() As Label 'метки полей редактора (верх)
74 Private oArrayTextBoxEditTop() As TextBox 'поля редактора (верх)
75 Private oTableEditTop As New Table 'верхняя строка состояния
76 'bottom
77 Private oLabelNameEditBottom As New Label 'название панели редактора (низ)
78 Private oLabelEventEditBottom As New Label 'метка последнего события (низ)
79 Private oTextBoxEventEditBottom As New TextBox 'текст последнего события (низ)
80 Private oImageSelectEditBottom As New System.Web.UI.WebControls.Image 'треугольничек текущей записи ⊳ (низ)
81 Private oImageEditEditBottom As New System.Web.UI.WebControls.Image 'запрос на обновление (низ)
82 Private oImageDoubleEditBottom As New System.Web.UI.WebControls.Image 'дублирование (низ)
83 Private oImageLoadEditBottom As New System.Web.UI.WebControls.Image 'заливка (низ)
84 Private oImageClearEditBottom As New System.Web.UI.WebControls.Image 'очистка (низ)
85 Private oImageDelEditBottom As New System.Web.UI.WebControls.Image 'запрос на удаление (низ)
86 Private oImageNewEditBottom As New System.Web.UI.WebControls.Image 'звёздочка новой записи ✴ (низ)
87 Private oImageAddEditBottom As New System.Web.UI.WebControls.Image 'запрос на добавление (низ)
88 Private oArrayLabelEditBottom() As Label 'метки полей редактора (низ)
89 Private oArrayTextBoxEditBottom() As TextBox 'поля редактора (низ)
90 Private oTableEditBottom As New Table 'нижняя строка состояния
91 #End Region 'var редактор.
92 #Region "var остальные"
93 Private bRaisePostBackEvent As Boolean
94 #End Region
95 #End Region 'var
96 #Region "property"
97 'группа свойств типа нумератора страниц
98 Private _customPager As New PagingStyle
99 ''' -----------------------------------------------------------------------------
100 ''' <summary>
101 ''' Определяет свойства строки состояния CustomPaging; не поддерживает ViewState.
102 ''' </summary>
103 ''' <value>Стиль.</value>
104 ''' <remarks>
105 ''' </remarks>
106 ''' <history>
107 ''' [Max Pro] 4.05.2008 Created
108 ''' </history>
109 ''' -----------------------------------------------------------------------------
110 <DesignerSerializationVisibility(DesignerSerializationVisibility.Content), _
111 NotifyParentProperty(True), _
112 PersistenceMode(PersistenceMode.InnerProperty), _
113 Category("Styles"), _
114 Description("Определяет свойства строки состояния CustomPaging.")> _
115 Public ReadOnly Property CustomPager() As PagingStyle
116 Get
117 Return _customPager
118 End Get
119 End Property
120 'группа свойств типа редактора
121 Private _customEditor As New EditStyle
122 ''' -----------------------------------------------------------------------------
123 ''' <summary>
124 ''' Определяет свойства строки состояния CustomEditor; не поддерживает ViewState.
125 ''' </summary>
126 ''' <value>Стиль.</value>
127 ''' <remarks>
128 ''' </remarks>
129 ''' <history>
130 ''' [Max Pro] 4.05.2008 Created
131 ''' </history>
132 ''' -----------------------------------------------------------------------------
133 <DesignerSerializationVisibility(DesignerSerializationVisibility.Content), _
134 NotifyParentProperty(True), _
135 PersistenceMode(PersistenceMode.InnerProperty), _
136 Category("Styles"), _
137 Description("Определяет свойства строки состояния CustomEditor.")> _
138 Public ReadOnly Property CustomEditor() As EditStyle
139 Get
140 Return _customEditor
141 End Get
142 End Property
143 ''' -----------------------------------------------------------------------------
144 ''' <summary>
145 ''' Строка соединения с базой данных SQL-сервер; не поддерживает ViewState.
146 ''' </summary>
147 ''' <value>По умолчанию пустая строка.</value>
148 ''' <remarks>
149 ''' </remarks>
150 ''' <history>
151 ''' [Max Pro] 4.05.2008 Created
152 ''' </history>
153 ''' -----------------------------------------------------------------------------
154 <Bindable(True), Category("Data"), DefaultValue(""), Description("Строка соединения с базой данных SQL-сервер.")> _
155 Public Property sConnectionString() As String
156 Get
157 Return sConStrWebDataGridSql
158 End Get
159 Set(ByVal Value As String)
160 sConStrWebDataGridSql = Value
161 End Set
162 End Property
163 Private _sSqlProcedure As String
164 ''' -----------------------------------------------------------------------------
165 ''' <summary>
166 ''' (Необязательно)Процедура, выдающая в том числе наименования полей простой таблицы SimpleTable; не поддерживает ViewState.
167 ''' </summary>
168 ''' <value>По умолчанию имеется ввиду простая таблица SimpleTable.</value>
169 ''' <remarks>
170 ''' </remarks>
171 ''' <history>
172 ''' [Max Pro] 5.05.2008 Created
173 ''' </history>
174 ''' -----------------------------------------------------------------------------
175 <Bindable(True), Category("Data"), DefaultValue(""), Description("(Необязательно)Процедура, выдающая в том числе наименования полей простой таблицы SimpleTable.")> _
176 Public Property sSqlProcedure() As String
177 Get
178 Return _sSqlProcedure
179 End Get
180 Set(ByVal Value As String)
181 _sSqlProcedure = Value
182 End Set
183 End Property
184 Private _sSqlSimpleTable As String
185 ''' -----------------------------------------------------------------------------
186 ''' <summary>
187 ''' Простая таблица SimpleTable; не поддерживает ViewState.
188 ''' </summary>
189 ''' <value>Если sSqlProcedure не заполнено, берётся SELECT * FROM SimpleTable.</value>
190 ''' <remarks>
191 ''' </remarks>
192 ''' <history>
193 ''' [Max Pro] 5.05.2008 Created
194 ''' </history>
195 ''' -----------------------------------------------------------------------------
196 <Bindable(True), Category("Data"), DefaultValue(""), Description("Простая таблица SimpleTable.")> _
197 Public Property sSqlSimpleTable() As String
198 Get
199 Return _sSqlSimpleTable
200 End Get
201 Set(ByVal Value As String)
202 _sSqlSimpleTable = Value
203 End Set
204 End Property
205 Private _sConfigTables As String
206 ''' -----------------------------------------------------------------------------
207 ''' <summary>
208 ''' (Необязательно)Настроечная таблица для таблиц sConfigTables; не поддерживает ViewState.
209 ''' </summary>
210 ''' <value>По умолчанию tabConfigTables (dbo).</value>
211 ''' <remarks>
212 ''' </remarks>
213 ''' <history>
214 ''' [Max Pro] 5.05.2008 Created
215 ''' </history>
216 ''' -----------------------------------------------------------------------------
217 <Bindable(True), Category("Data"), DefaultValue("tabConfigTables"), Description("(Необязательно)Настроечная таблица для таблиц sConfigTables.")> _
218 Public Property sConfigTables() As String
219 Get
220 Return _sConfigTables
221 End Get
222 Set(ByVal Value As String)
223 _sConfigTables = Value
224 End Set
225 End Property
226 Private _sConfigFields As String
227 ''' -----------------------------------------------------------------------------
228 ''' <summary>
229 ''' (Необязательно)Настроечная таблица для полей sConfigFields; не поддерживает ViewState.
230 ''' </summary>
231 ''' <value>По умолчанию tabConfigFields (dbo).</value>
232 ''' <remarks>
233 ''' </remarks>
234 ''' <history>
235 ''' [Max Pro] 5.05.2008 Created
236 ''' </history>
237 ''' -----------------------------------------------------------------------------
238 <Bindable(True), Category("Data"), DefaultValue("tabConfigFields"), Description("(Необязательно)Настроечная таблица для полей sConfigFields.")> _
239 Public Property sConfigFields() As String
240 Get
241 Return _sConfigFields
242 End Get
243 Set(ByVal Value As String)
244 _sConfigFields = Value
245 End Set
246 End Property
247 Private _bIsVisibleName As Boolean
248 ''' -----------------------------------------------------------------------------
249 ''' <summary>
250 ''' Показывать или нет наименование текущего редактора (в виде DropDownList); не поддерживает ViewState.
251 ''' </summary>
252 ''' <value>По умолчанию да, показывать.</value>
253 ''' <remarks>
254 ''' </remarks>
255 ''' <history>
256 ''' [Max Pro] 31.05.2008 Created
257 ''' </history>
258 ''' -----------------------------------------------------------------------------
259 <Bindable(True), Category("Layout"), DefaultValue(True), Description("Показывать или нет наименование текущего редактора (в виде DropDownList).")> _
260 Public Property bIsVisibleName() As Boolean
261 Get
262 Return _bIsVisibleName
263 End Get
264 Set(ByVal Value As Boolean)
265 _bIsVisibleName = Value
266 End Set
267 End Property
268 REM Строка сортировки.
269 Private Property sSortWebDataGridSql() As String
270 Get
271 If IsNothing(Page.Session("sSort1" & Page.ID & ID)) Then Return "" Else Return Page.Session("sSort1" & Page.ID & ID)
272 End Get
273 Set(ByVal Value As String)
274 Page.Session("sSort1" & Page.ID & ID) = Value
275 End Set
276 End Property
277 REM Направление сортировки.
278 Private Property sSort() As String
279 Get
280 If IsNothing(Page.Session("sSort2" & Page.ID & ID)) Then Return "asc" Else Return Page.Session("sSort2" & Page.ID & ID)
281 End Get
282 Set(ByVal Value As String)
283 Page.Session("sSort2" & Page.ID & ID) = Value
284 End Set
285 End Property
286 REM Настроечные таблицы, свойство 1 из 2.
287 Private _iMaxArray As Integer
288 Private ReadOnly Property iMaxArray() As Integer
289 Get
290 FirstDataSet()
291 Return _iMaxArray
292 End Get
293 End Property
294 REM Настроечные таблицы, свойство 2 из 2.
295 Private _oArrayConfig(,)
296 Private ReadOnly Property oArrayConfig() As Object(,)
297 Get
298 FirstDataSet()
299 Return _oArrayConfig
300 End Get
301 End Property
302 #End Region 'property
303 #Region "system"
304 REM Конструктор.
305 Public Sub New()
306 'общие
307 HeaderStyle.HorizontalAlign = HorizontalAlign.Center
308 HeaderStyle.BackColor = Color.Gainsboro
309 HeaderStyle.ForeColor = Color.Black
310 AlternatingItemStyle.BackColor = Color.WhiteSmoke
311 SelectedItemStyle.BackColor = Color.DarkGray
312 SelectedItemStyle.ForeColor = Color.White
313 AutoGenerateColumns = False
314 'нумератор страниц
315 AllowPaging = True
316 AllowSorting = True
317 EnableViewState = False
318 PagerStyle.Visible = False
319 PagerStyle.Position = PagerPosition.Top
320 'редактор
321 _iMaxArray = -1
322 _bIsVisibleName = True
323 _sConfigTables = "tabConfigTables"
324 _sConfigFields = "tabConfigFields"
325 ReDim _oArrayConfig(6, -1)
326 ReDim sArrayTextBoxEdit(-1) 'поля редактора (текст)
327 ReDim oArrayLabelEditTop(-1) 'метки полей редактора (верх)
328 ReDim oArrayTextBoxEditTop(-1) 'поля редактора (верх)
329 ReDim oArrayLabelEditBottom(-1) 'метки полей редактора (низ)
330 ReDim oArrayTextBoxEditBottom(-1) 'поля редактора (низ)
331 End Sub
332 REM Обработка входящих данных формы.
333 Private Sub WebDataGridSql_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Init
334 ReadSessionVar()
335 SetDataSource()
336 SetArrayTextBoxEdit()
337 End Sub
338 REM Формирование дочерних элементов управления.
339 Protected Overrides Sub CreateChildControls()
340 MyBase.CreateChildControls()
341 'нумератор страниц
342 oTextBoxTop.ID = ID & "_oTextBoxTop"
343 oTextBoxBottom.ID = ID & "_oTextBoxBottom"
344 Controls.Add(oTextBoxTop)
345 Controls.Add(oTextBoxBottom)
346 'редактор
347 oTextBoxEventEditTop.ID = ID & "_oTextBoxEventEditTop"
348 oTextBoxEventEditBottom.ID = ID & "_oTextBoxEventEditBottom"
349 oTextBoxEventEditTop.ReadOnly = True
350 oTextBoxEventEditBottom.ReadOnly = True
351 Controls.Add(oTextBoxEventEditTop)
352 Controls.Add(oTextBoxEventEditBottom)
353 End Sub
354 REM Сортировка.
355 Private Sub WebDataGridSql_SortCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridSortCommandEventArgs) Handles MyBase.SortCommand
356 sSortWebDataGridSql = e.SortExpression + " " + sSort
357 CType(DataSource, DataView).Sort = sSortWebDataGridSql
358 DataBind()
359 If sSort = "asc" Then
360 sSort = "desc"
361 SetTextBoxEvent("Была проведена сортировка по возрастанию.")
362 Else
363 sSort = "asc"
364 SetTextBoxEvent("Была проведена сортировка по убыванию.")
365 End If
366 End Sub
367 REM Выделение строки.
368 Private Sub WebDataGridSql_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.SelectedIndexChanged
369 Page.Session("iSelect" & Page.ID & ID) = SelectedIndex
370 SetTextBoxEvent("Была выделена строка.")
371 End Sub
372 REM Режим редактирования.
373 Private Sub WebDataGridSql_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles MyBase.EditCommand
374 Page.Session("iEdit" & Page.ID & ID) = e.Item.ItemIndex
375 EditItemIndex = e.Item.ItemIndex : DataBind()
376 SetTextBoxEvent("Открыт внутристрочный режим редактирования строки.")
377 End Sub
378 REM Отмена редактирования.
379 Private Sub WebDataGridSql_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles MyBase.CancelCommand
380 Page.Session("iEdit" & Page.ID & ID) = -1
381 EditItemIndex = -1 : DataBind()
382 SetTextBoxEvent("Отменён внутристрочный режим редактирования строки.")
383 End Sub
384 REM Обновление строки.
385 Private Sub WebDataGridSql_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles MyBase.UpdateCommand
386 'var
387 Dim i As Integer
388 Dim iConfig As Integer
389 Dim iColumn As Integer
390 Dim iSum As Integer
391 Dim iMaxColumn As Integer
392 Dim sArrayDataField(,) As String
393 'var zap
394 Dim iNum As Integer
395 Dim sSelect As String
396 Dim oP(,)
397 Dim oErr As Exception
398 'end var
399 'ini
400 iMaxColumn = Columns.Count - 1
401 'end ini
402 'обновление
403 iSum = -1
404 For iConfig = 0 To iMaxArray
405 If oArrayConfig(2, iConfig) = False Then
406 For iColumn = 0 To iMaxColumn
407 If TypeOf Columns(iColumn) Is BoundColumn Then
408 If oArrayConfig(0, iConfig) = CType(Columns(iColumn), BoundColumn).DataField Then
409 If Items(EditItemIndex).Cells(iColumn).Controls.Count > 0 Then
410 If TypeOf Items(EditItemIndex).Cells(iColumn).Controls(0) Is TextBox Then
411 iSum += 1
412 ReDim Preserve sArrayDataField(1, iSum)
413 sArrayDataField(0, iSum) = oArrayConfig(0, iConfig)
414 sArrayDataField(1, iSum) = CType(Items(EditItemIndex).Cells(iColumn).Controls(0), TextBox).Text
415 End If 'TypeOf Is TextBox
416 End If 'Controls.Count>0
417 End If 'iConfig=iColumn
418 End If 'TypeOf Is BoundColumn
419 Next iColumn
420 End If 'не является ReadOnly
421 Next iConfig
422 If sConnectionString > "" And sSqlSimpleTable > "" Then
423 If EditItemIndex > -1 Then
424 If iMaxColumn > -1 Then
425 If iSum > -1 Then
426 sSelect = "UPDATE " & sSqlSimpleTable & " SET "
427 ReDim oP(1, iSum)
428 For i = 0 To iSum
429 sSelect &= "[" & sArrayDataField(0, i) & "]=@" & sArrayDataField(0, i) & ","
430 oP(0, i) = "@" & sArrayDataField(0, i)
431 Select Case sArrayDataField(1, i)
432 Case "null"
433 oP(1, i) = DBNull.Value
434 Case "true", "да", "истина"
435 oP(1, i) = True
436 Case "false", "нет", "ложь"
437 oP(1, i) = False
438 Case Else
439 If IsNumeric(sArrayDataField(1, i)) Then
440 oP(1, i) = Convert.ToDecimal(sArrayDataField(1, i))
441 ElseIf All.bIsDateTsql(sArrayDataField(1, i)) Then
442 oP(1, i) = Convert.ToDateTime(sArrayDataField(1, i))
443 Else
444 oP(1, i) = sArrayDataField(1, i)
445 End If
446 End Select
447 Next i
448 If Right(sSelect, 1) = "," Then sSelect = Left(sSelect, Len(sSelect) - 1)
449 sSelect &= " WHERE Cast([" & oArrayConfig(5, 0) & "] AS NVarChar(4000))='" & Convert.ToString(DataKeys(EditItemIndex)) & "'"
450 iNum = All.iZapExeN(All.ConnectString.WebDataGridSql, sSelect, oP, oErr, System.Data.CommandType.Text)
451 If iNum > 0 Then
452 SetTextBoxEvent("Строк обновлено: " & iNum & ".")
453 bChangeDataSource = True
454 Page.Session("iEdit" & Page.ID & ID) = -1
455 EditItemIndex = -1
456 ElseIf iNum = 0 Then
457 SetTextBoxEvent("Строчное обновление не прошло; вероятно обновляемая строка была удалена.")
458 Else
459 SetTextBoxEvent("Строчное обновление не прошло из-за ошибки: " & oErr.Message)
460 End If
461 Else
462 SetTextBoxEvent("Строчное обновление не прошло из-за ошибки: не найдено ни одной колонки в коллекции Columns типа BoundColumn с доступом на запись.")
463 End If
464 Else
465 SetTextBoxEvent("Строчное обновление не прошло из-за ошибки: не найдено ни одной колонки Columns ― возможно использовано свойство DataSource вместо рекомендованного sSqlProcedure, и свойство AutoGenerateColumns установлено в true.")
466 End If
467 Else
468 SetTextBoxEvent("Строчное обновление не прошло из-за ошибки: непонятно какую строку обновлять.")
469 End If
470 Else
471 SetTextBoxEvent("Строчное обновление не прошло из-за ошибки: не задано свойство sConnectionString или sSqlSimpleTable.")
472 End If
473 End Sub
474 REM Обработка события на стороне клиента, которое вызвало обратный запрос, а также порождение соответствующих событий на стороне сервера.
475 Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
476 'var
477 Dim i As Integer
478 Dim sDdlNameValue As String
479 'var zap
480 Dim iSum As Integer
481 Dim iNum As Integer
482 Dim iMax As Integer
483 Dim sSelect As String
484 Dim oP(,)
485 Dim oErr As Exception
486 Dim oZap(,)
487 Dim oArrayDouble(,) 'x=0→sSqlSimpleTable.sField,x=1→значение.
488 'end var
489 'нумератор страниц
490 Select Case eventArgument
491 Case "oTextBoxTop"
492 Dim s As String = Page.Request.Form(oTextBoxTop.ID)
493 If IsNumeric(s) Then
494 If s > 0 And s <= PageCount Then
495 Page.Session("iPage" & Page.ID & ID) = s - 1
496 CurrentPageIndex = s - 1
497 Page.Session("iSelect" & Page.ID & ID) = -1
498 SelectedIndex = -1
499 DataBind()
500 End If
501 End If
502 SetTextBoxEvent("Состоялся переход на страницу " & CurrentPageIndex + 1 & ".")
503 Case "oTextBoxBottom"
504 Dim s As String = Page.Request.Form(oTextBoxBottom.ID)
505 If IsNumeric(s) Then
506 If s > 0 And s <= PageCount Then
507 Page.Session("iPage" & Page.ID & ID) = s - 1
508 CurrentPageIndex = s - 1
509 Page.Session("iSelect" & Page.ID & ID) = -1
510 SelectedIndex = -1
511 DataBind()
512 End If
513 End If
514 SetTextBoxEvent("Состоялся переход на страницу " & CurrentPageIndex + 1 & ".")
515 Case "oImage1"
516 Page.Session("iPage" & Page.ID & ID) = 0
517 CurrentPageIndex = 0
518 DataBind()
519 SetTextBoxEvent("Состоялся переход на страницу " & CurrentPageIndex + 1 & ".")
520 Case "oImage2"
521 If CurrentPageIndex > 0 Then
522 Page.Session("iPage" & Page.ID & ID) -= 1
523 CurrentPageIndex -= 1
524 Page.Session("iSelect" & Page.ID & ID) = -1
525 SelectedIndex = -1
526 DataBind()
527 End If
528 SetTextBoxEvent("Состоялся переход на страницу " & CurrentPageIndex + 1 & ".")
529 Case "oImage3"
530 If CurrentPageIndex < (PageCount - 1) Then
531 Page.Session("iPage" & Page.ID & ID) += 1
532 CurrentPageIndex += 1
533 Page.Session("iSelect" & Page.ID & ID) = -1
534 SelectedIndex = -1
535 DataBind()
536 End If
537 SetTextBoxEvent("Состоялся переход на страницу " & CurrentPageIndex + 1 & ".")
538 Case "oImage4"
539 If PageCount > 0 Then
540 Page.Session("iPage" & Page.ID & ID) = PageCount - 1
541 CurrentPageIndex = PageCount - 1
542 Page.Session("iSelect" & Page.ID & ID) = -1
543 SelectedIndex = -1
544 DataBind()
545 End If
546 SetTextBoxEvent("Состоялся переход на страницу " & CurrentPageIndex + 1 & ".")
547 End Select
548 'редактор
549 'синхронизация
550 iSum = -1
551 For i = 0 To iMaxArray
552 If oArrayConfig(2, i) = False Then iSum += 1
553 Next i
554 ReDim sArrayTextBoxEdit(iSum)
555 iSum = -1
556 For i = 0 To iMaxArray
557 If oArrayConfig(2, i) = False Then
558 iSum += 1
559 If Page.Request.Form(oArrayTextBoxEditTop(i).ID) > "" Then
560 sArrayTextBoxEdit(iSum) = Page.Request.Form(oArrayTextBoxEditTop(i).ID)
561 ElseIf Page.Request.Form(oArrayTextBoxEditBottom(i).ID) > "" Then
562 sArrayTextBoxEdit(iSum) = Page.Request.Form(oArrayTextBoxEditBottom(i).ID)
563 Else
564 sArrayTextBoxEdit(iSum) = ""
565 End If
566 End If
567 Next i
568 Select Case eventArgument
569 Case "oImageEditEdit" 'запрос на обновление
570 If sConnectionString > "" And sSqlSimpleTable > "" Then
571 If iMaxArray > -1 And SelectedIndex > -1 Then
572 If iSum > -1 Then
573 sSelect = "UPDATE " & sSqlSimpleTable & " SET "
574 ReDim oP(1, iSum)
575 iSum = -1
576 For i = 0 To iMaxArray
577 If oArrayConfig(2, i) = False Then
578 iSum += 1
579 sSelect &= "[" & oArrayConfig(0, i) & "]=@" & oArrayConfig(0, i) & ","
580 oP(0, iSum) = "@" & oArrayConfig(0, i)
581 Select Case sArrayTextBoxEdit(iSum)
582 Case "null"
583 oP(1, iSum) = DBNull.Value
584 Case "true", "да", "истина"
585 oP(1, iSum) = True
586 Case "false", "нет", "ложь"
587 oP(1, iSum) = False
588 Case Else
589 If IsNumeric(sArrayTextBoxEdit(iSum)) Then
590 oP(1, iSum) = Convert.ToDecimal(sArrayTextBoxEdit(iSum))
591 ElseIf bIsDateTsql(sArrayTextBoxEdit(iSum)) Then
592 oP(1, iSum) = Convert.ToDateTime(sArrayTextBoxEdit(iSum))
593 Else
594 oP(1, iSum) = sArrayTextBoxEdit(iSum)
595 End If
596 End Select
597 End If
598 Next i
599 If Right(sSelect, 1) = "," Then sSelect = Left(sSelect, Len(sSelect) - 1)
600 sSelect &= " WHERE Cast([" & oArrayConfig(5, 0) & "] AS NVarChar(4000))='" & Convert.ToString(DataKeys(SelectedIndex)) & "'"
601 iNum = All.iZapExeN(All.ConnectString.WebDataGridSql, sSelect, oP, oErr, System.Data.CommandType.Text)
602 If iNum > 0 Then
603 SetTextBoxEvent("Обновлено строк: " & iNum & ".")
604 bChangeDataSource = True
605 ElseIf iNum = 0 Then
606 SetTextBoxEvent("Обновление не прошло; вероятно обновляемая строка была удалена.")
607 Else
608 SetTextBoxEvent("Обновление не прошло из-за ошибки: " & oErr.Message)
609 End If
610 Else
611 SetTextBoxEvent("Обновление не прошло из-за ошибки: не найдено ни одного поля с доступом на запись.")
612 End If
613 Else
614 SetTextBoxEvent("Обновление не прошло из-за ошибки: непонятно какую строку обновлять.")
615 End If
616 Else
617 SetTextBoxEvent("Обновление не прошло из-за ошибки: не задано свойство sConnectionString или sSqlSimpleTable.")
618 End If
619 Case "oImageDoubleEdit" 'дублирование
| | | |