Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Книги по теме

Искать:
в:
Порядок:

Исходник

Автор:

mogadanez

 
Название:

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
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта