|
|
|
 |
 |
Исходник |
 |
|
 |
 |
|
Автор:
|
|
|
Название:
|
Custom Runtime Template Column |
|
Дата:
|
24 December 2002 |
|
Описание: |
Добавление Template Колонок в Датагрид на лету. |
| |
Разместить ссылку на этот исходник в форуме вы можете вставив в текст сообщения
следующую строку:
[CODEPOST ID=27]Custom Runtime Template Column[/CODEPOST] |
| Оценка: |
Проголосовало 4 посетителей, средняя оценка 2.25 |
| Оценить: |
|
1 'динамическая колонка.
2 Public Class DataGridTemplate
3 Implements ITemplate
4 Protected m_TemplateType As ListItemType
5 Protected m_sColumnName As String
6 Protected m_iIndex As Integer
7
8 Sub New(ByVal p_Type As ListItemType, ByVal p_sColumnName As String, ByVal p_iIndex As Integer)
9 m_TemplateType = p_Type
10 m_sColumnName = p_sColumnName
11 m_iIndex = p_iIndex
12
13 End Sub
14
15 Sub InstantiateIn(ByVal Container As Control) _
16 Implements ITemplate.InstantiateIn
17 Dim l_Label As Label
18 Dim l_TextBox As TextBox
19 Select Case m_TemplateType
20 Case ListItemType.Header
21 l_Label = New Label()
22 l_Label.Text = m_sColumnName
23 Container.Controls.Add(l_Label)
24
25 Case ListItemType.Item
26 l_Label = New Label()
27 AddHandler l_Label.DataBinding, AddressOf LabelBinding
28 Container.Controls.Add(l_Label)
29
30 Case ListItemType.EditItem
31 l_TextBox = New TextBox()
32 l_TextBox.ID = "TextEdit" + m_iIndex.ToString
33 AddHandler l_TextBox.DataBinding, AddressOf EditBinding
34 Container.Controls.Add(l_TextBox)
35 End Select
36 End Sub
37 Private Sub LabelBinding(ByVal sender As Object, ByVal e As System.EventArgs)
38 Dim Control As Label
39 Dim container As DataGridItem
40 Control = CType(sender, Label)
41 container = CType(Control.NamingContainer, DataGridItem)
42 Control.Text += Convert.ToString(CType(container.DataItem, DataRowView)(m_sColumnName))
43
44 End Sub
45
46 Private Sub EditBinding(ByVal sender As Object, ByVal e As System.EventArgs)
47 Dim Control As TextBox
48 Dim container As DataGridItem
49 Control = CType(sender, TextBox)
50 container = CType(Control.NamingContainer, DataGridItem)
51 Control.Text += Convert.ToString(CType(container.DataItem, DataRowView)(m_sColumnName))
52 End Sub
53 End Class
54
55
56 Public Class Sample
57 Inherits System.Web.UI.Page
58
59 Protected WithEvents grdDirectory As System.Web.UI.WebControls.DataGrid
60
61 Private Sub BindGrid(p_DataSource as DataTable)
62 Dim l_TemplateColumn As TemplateColumn
63 Dim l_iColumnIndex As Integer
64 Dim l_EditColumn As New EditCommandColumn()
65 Dim l_DeleteColumn As New ButtonColumn()
66 Dim l_Column As DataGridColumn
67 Dim i As Integer
68 l_iColumnIndex = 1
69 for l_iColumnIndex=0 to l_DataSource.columns.count-1
70 l_TemplateColumn = New TemplateColumn()
71 l_TemplateColumn.HeaderTemplate = New DataGridTemplate(ListItemType.Header, m_CurrentDictionary.Columns(l_iColumnIndex).ColumnName, l_iColumnIndex)
72 l_TemplateColumn.ItemTemplate = New DataGridTemplate(ListItemType.Item, m_CurrentDictionary.Columns(l_iColumnIndex).ColumnName, l_iColumnIndex)
73 l_TemplateColumn.EditItemTemplate = New DataGridTemplate(ListItemType.EditItem, m_CurrentDictionary.Columns(l_iColumnIndex).ColumnName, l_iColumnIndex)
74
75 grdDirectory.Columns.Add(l_TemplateColumn)
76 next
77
78 End If
79
80 grdDirectory.DataBind()
81 End Sub
82
83 'функция для доставания значений из колонок в режиме редактирования по ее индексу
84 Private Function GetValueFromForm(ByVal p_iIndex As Integer) As String
85 Dim i As Integer
86 For i = 0 To Request.Form.Keys.Count - 1
87 If Request.Form.Keys(i).EndsWith("TextEdit" + p_iIndex.ToString) Then
88 Return Request.Form(i)
89 End If
90 Next
91 Return ""
92 End Function
93
94 .......
95
96 end Class
97
98 |
| Вернуться к списку исходников в категории DataGrid, DataList, Repeater |
|
|
 |
 |
 |
 |
|
|