Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call Submitas(sender, e)
End Sub
Private Sub Submitas(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim DGlist As DataGrid, DS As New DataSet
DGlist = RegContentPane.FindControl("DGlist")
DS = ListDB.GetColumns(ModuleId)
for each ....
'Then I loop throught each column and add it.
Dim tc2 As New TemplateColumn
tc2.HeaderTemplate = New DataGridTemplate(ModuleId,SysName, Name, type)
tc2.ItemTemplate = New DataGridTemplate(ModuleId, SysName, Name, type)
tc2.EditItemTemplate = New DataGridTemplate(ModuleId, SysName, Name, type)
DGlist.Columns.Add(tc2)
next
If Not DS Is Nothing Then
DGlist.DataSource = DS
DGlist.DataBind()
End If
end sub
Private Sub dg_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
Dim dg As DataGrid = CType(source, DataGrid), ListDB As New ASPNetPortal.ListDB
Select Case e.CommandName
Case "Edit"
dg.EditItemIndex = e.Item.ItemIndex
dg.DataBind()
End Select
End Sub
Private Class DataGridTemplate
Implements ITemplate
Dim templateType As ListItemType
Dim ModuleId, syscolumnName, columnName As String
Dim type As Int16
Sub New(ByVal ModuleId As String, ByVal lstType As ListItemType, ByVal SysColName As String, ByVal ColName As String, ByVal colType As Int16)
Me.ModuleId = ModuleId
templateType = lstType
columnName = ColName
syscolumnName = SysColName
type = colType
End Sub
Sub InstantiateIn(ByVal container As Control) _
Implements ITemplate.InstantiateIn
Dim lc As New Literal, ListDB As New ASPNetPortal.ListDB
Select Case templateType
Case ListItemType.Header
lc.Text = columnName
container.Controls.Add(lc)
Case ListItemType.Item
If type = -1 Then
Dim imb As New ImageButton
imb.ID = "editbtn"
imb.CommandName = "Edit"
imb.ImageUrl = "~/images/edit.gif"
container.Controls.Add(imb)
Else
lc.Text = columnName
AddHandler lc.DataBinding, AddressOf DataGridTemplate_DataBinding
container.Controls.Add(lc)
End If
Case ListItemType.EditItem
Select Case type
Case -1
Dim imb As New ImageButton
imb.ID = "updatebtn"
imb.CommandName = "Update"
imb.ImageUrl = "~/images/update.gif"
container.Controls.Add(imb)
imb = New ImageButton
imb.ID = "cancelbtn"
imb.CommandName = "Cancel"
imb.ImageUrl = "~/images/cancel.gif"
container.Controls.Add(imb)
Case 0
lc.Text = columnName
AddHandler lc.DataBinding, AddressOf DataGridTemplate_DataBinding
container.Controls.Add(lc)
Case 1
Dim tb As New TextBox
tb.ID = columnName
AddHandler tb.DataBinding, AddressOf Control_DataBinding
container.Controls.Add(tb)
Case 2 'dropdownlist
Dim ddl As New DropDownList
ddl.ID = columnName
Dim ds As New DataSet
ds = ListDB.GetColumnData(ModuleId, syscolumnName)
ddl.DataTextField = "Caption"
ddl.DataValueField = "Caption"
ddl.DataSource = ds
ddl.DataBind()
container.Controls.Add(ddl)
'ddl.SelectedValue = CType(container, DataGridItem).DataItem(columnName)
AddHandler ddl.DataBinding, AddressOf Control_DataBinding
End Select
Case ListItemType.Footer
lc.Text = "Footer"
container.Controls.Add(lc)
End Select
End Sub
Private Sub DataGridTemplate_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs)
Dim container As DataGridItem
Dim lc As Literal
lc = CType(sender, Literal)
container = CType(lc.NamingContainer, DataGridItem)
If Not IsDBNull(container.DataItem(lc.Text)) Then
lc.Text = container.DataItem(lc.Text)
Else
lc.Text = ""
End If
End Sub
Private Sub Control_DataBinding(ByVal sender As Object, ByVal e As System.EventArgs)
Dim container As DataGridItem
Dim lc As Object
Select Case sender.GetType.Name
Case "TextBox"
lc = CType(sender, TextBox)
container = CType(lc.NamingContainer, DataGridItem)
If Not IsDBNull(container.DataItem(lc.ID)) Then
lc.Text = container.DataItem(lc.ID)
End If
Case "DropDownList"
lc = CType(sender, DropDownList)
container = CType(lc.NamingContainer, DataGridItem)
If Not IsDBNull(container.DataItem(lc.id)) Then
CType(lc, DropDownList).SelectedValue = container.DataItem(lc.id)
End If
End Select
End Sub
End Class
End Class