G
Guest
Hi,
The DataGrid aps:EditCommandColumn when used with column templates created
programmatically does not trigger the _Edit subroutine in code. The
ASPatagrid definition is below (1), the _Edit subroutine signature (2) is
below that and the column template class is (3).
Thank you for your help,
Scott
1)
<ASPATAGRID id="MyDataGrid" runat="server" AutoGenerateColumns="False"
AllowSorting="True"
Font-Names="Verdana"AlternatingItemStyle-BackColor="Gainsboro"
OnItemDataBound="MyDataGrid_ItemBound" ShowFooter="True"
OnSortCommand="MyDataGrid_SortCommand" OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
onDeleteCommand="MyDataGrid_DeleteCommand"
OnUpdateCommand="MyDataGrid_Update" BorderWidth="1px"
Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd"
BorderColor="Black" CellPadding="3"Height="441px">
<HeaderStyle BackColor="#AAAADD" Wrap="False"></HeaderStyle>
<Columns>
<asp:EditCommandColumn ButtonType="PushButton" UpdateText="Ok"
HeaderText="Edit Info" CancelText="Cancel" EditText="Edit">
<HeaderStyle Wrap="False" HorizontalAlign="Center" Width="50px"></HeaderStyle>
<ItemStyle Wrap="False" Width="50px"></ItemStyle>
</asp:EditCommandColumn>
</Columns>
</ASPATAGRID>
2)
Sub MyDataGrid_Edit(ByVal sender As Object, ByVal e As _
DataGridCommandEventArgs)
..
..
..
End Sub
The column templates are created with by calling the custom Templates column:
3)
Public Class DynamicDataGridTemplate
Implements ITemplate
Dim templateType As ListItemType
Dim columnName As String
Dim ColumnNum As Integer
Sub New(ByVal type As ListItemType, ByVal ColName As String, ByVal ColNum
As Integer)
templateType = type
columnName = ColName
columnNum = ColNum
End Sub
Sub InstantiateIn(ByVal container As Control) _
Implements ITemplate.InstantiateIn
Dim lc As New Literal
Dim chkBox1 As New CheckBox
Dim chkBox2 As New CheckBox
Select Case templateType
Case ListItemType.Header
If ColumnNum = 0 Then
lc.Text = "<B>" & columnName & "</B><BR>"
container.Controls.Add(lc)
Else
lc.Text = "<B>" & columnName & "</B><BR>"
container.Controls.Add(lc)
If ColumnNum = 1 Then
chkBox1.Text = "Asc"
If columnName.StartsWith("Acad") Then
chkBox1.Checked = False
Else
chkBox1.Checked = True
End If
chkBox1.ID = "chkBox" & ColumnNum
container.Controls.Add(chkBox1)
If columnName.StartsWith("Acad") Then
chkBox2.Checked = True
Else
chkBox2.Checked = False
End If
chkBox2.Text = "Desc"
chkBox2.ID = "chkBox" & ColumnNum
container.Controls.Add(chkBox2)
Else
chkBox1.Text = "Asc"
chkBox1.ID = "chkBox" & ColumnNum
container.Controls.Add(chkBox1)
chkBox2.Text = "Desc"
chkBox2.ID = "chkBox" & ColumnNum
container.Controls.Add(chkBox2)
End If
End If
Case ListItemType.Item
lc.Text = "Item " & columnName
container.Controls.Add(lc)
Case ListItemType.EditItem
Dim tb As New TextBox
tb.Text = ""
container.Controls.Add(tb)
Case ListItemType.Footer
lc.Text = "<I>Footer</I>"
container.Controls.Add(lc)
End Select
End Sub
End Class
The DataGrid aps:EditCommandColumn when used with column templates created
programmatically does not trigger the _Edit subroutine in code. The
ASPatagrid definition is below (1), the _Edit subroutine signature (2) is
below that and the column template class is (3).
Thank you for your help,
Scott
1)
<ASPATAGRID id="MyDataGrid" runat="server" AutoGenerateColumns="False"
AllowSorting="True"
Font-Names="Verdana"AlternatingItemStyle-BackColor="Gainsboro"
OnItemDataBound="MyDataGrid_ItemBound" ShowFooter="True"
OnSortCommand="MyDataGrid_SortCommand" OnEditCommand="MyDataGrid_Edit"
OnCancelCommand="MyDataGrid_Cancel"
onDeleteCommand="MyDataGrid_DeleteCommand"
OnUpdateCommand="MyDataGrid_Update" BorderWidth="1px"
Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd"
BorderColor="Black" CellPadding="3"Height="441px">
<HeaderStyle BackColor="#AAAADD" Wrap="False"></HeaderStyle>
<Columns>
<asp:EditCommandColumn ButtonType="PushButton" UpdateText="Ok"
HeaderText="Edit Info" CancelText="Cancel" EditText="Edit">
<HeaderStyle Wrap="False" HorizontalAlign="Center" Width="50px"></HeaderStyle>
<ItemStyle Wrap="False" Width="50px"></ItemStyle>
</asp:EditCommandColumn>
</Columns>
</ASPATAGRID>
2)
Sub MyDataGrid_Edit(ByVal sender As Object, ByVal e As _
DataGridCommandEventArgs)
..
..
..
End Sub
The column templates are created with by calling the custom Templates column:
3)
Public Class DynamicDataGridTemplate
Implements ITemplate
Dim templateType As ListItemType
Dim columnName As String
Dim ColumnNum As Integer
Sub New(ByVal type As ListItemType, ByVal ColName As String, ByVal ColNum
As Integer)
templateType = type
columnName = ColName
columnNum = ColNum
End Sub
Sub InstantiateIn(ByVal container As Control) _
Implements ITemplate.InstantiateIn
Dim lc As New Literal
Dim chkBox1 As New CheckBox
Dim chkBox2 As New CheckBox
Select Case templateType
Case ListItemType.Header
If ColumnNum = 0 Then
lc.Text = "<B>" & columnName & "</B><BR>"
container.Controls.Add(lc)
Else
lc.Text = "<B>" & columnName & "</B><BR>"
container.Controls.Add(lc)
If ColumnNum = 1 Then
chkBox1.Text = "Asc"
If columnName.StartsWith("Acad") Then
chkBox1.Checked = False
Else
chkBox1.Checked = True
End If
chkBox1.ID = "chkBox" & ColumnNum
container.Controls.Add(chkBox1)
If columnName.StartsWith("Acad") Then
chkBox2.Checked = True
Else
chkBox2.Checked = False
End If
chkBox2.Text = "Desc"
chkBox2.ID = "chkBox" & ColumnNum
container.Controls.Add(chkBox2)
Else
chkBox1.Text = "Asc"
chkBox1.ID = "chkBox" & ColumnNum
container.Controls.Add(chkBox1)
chkBox2.Text = "Desc"
chkBox2.ID = "chkBox" & ColumnNum
container.Controls.Add(chkBox2)
End If
End If
Case ListItemType.Item
lc.Text = "Item " & columnName
container.Controls.Add(lc)
Case ListItemType.EditItem
Dim tb As New TextBox
tb.Text = ""
container.Controls.Add(tb)
Case ListItemType.Footer
lc.Text = "<I>Footer</I>"
container.Controls.Add(lc)
End Select
End Sub
End Class