or
Hello, I am trying to follow this sample
http://www.telerik.com/help/aspnet-ajax/grid-programmatic-creation.html
to create a template grid column in a grid that in my case is contained inside a CompositeControl
First attempt, using the control OnInit event
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
EnsureChildControls();
…
if
(!Page.IsPostBack)
{
var boundColumn = new GridBoundColumn();
grid.MasterTableView.Columns.Add(boundColumn);
boundColumn.DataField = "MyColumn";
GridTemplateColumn templateColumn =
new
GridTemplateColumn();
grid.MasterTableView.Columns.Add(templateColumn);
templateColumn.ItemTemplate =
new
MyTemplate(templateColumnName);
}
}
Result: the InstantiateIn method of the template is called only the first time, but in postbacks not.
Second attempt: subscribing to the page Init event
protected
override
void
OnInit(EventArgs e)
{
base
.OnInit(e);
EnsureChildControls();
Page.Init += PageInit;
…
private
void
PageInit(
object
sender, EventArgs e)
{
var boundColumn = new GridBoundColumn();
boundColumn.DataField = "MyColumn";
grid.MasterTableView.Columns.Add(boundColumn);
GridTemplateColumn templateColumn =
new
GridTemplateColumn();
templateColumn.ItemTemplate =
new
MyTemplate(templateColumnName);
grid.MasterTableView.Columns.Add(templateColumn);
Hello,
I have a grid with a customfilter column that lets filter choosing in a combobox that shows images (I'm using sprites, and the image is set through cssclass).
Here is the Custom filter class:
Public
Class
SeleccionFilteringColumn
Inherits
GridTemplateColumn
Protected
Overrides
Sub
SetupFilterControls(
ByVal
cell
As
TableCell)
Dim
rcBox
As
New
RadComboBox()
rcBox.Width = 55
rcBox.ID =
"DropDownListSeleccion"
AddHandler
rcBox.ItemCreated,
AddressOf
rcBox_ItemCreated
rcBox.AutoPostBack =
True
rcBox.Items.Add(
New
Telerik.Web.UI.RadComboBoxItem(
""
, -1))
rcBox.Items.Add(
New
Telerik.Web.UI.RadComboBoxItem(
""
, 0))
rcBox.Items.Add(
New
Telerik.Web.UI.RadComboBoxItem(
""
, 1))
AddHandler
rcBox.SelectedIndexChanged,
AddressOf
rcBox_SelectedIndexChanged
cell.Controls.Add(rcBox)
End
Sub
Protected
Overrides
Sub
SetCurrentFilterValueToControl(
ByVal
cell
As
TableCell)
If
Not
(
Me
.CurrentFilterValue =
""
)
Then
Try
DirectCast
(cell.Controls(0), RadComboBox).Items.FindItemByValue(
Me
.CurrentFilterValue).Selected =
True
Catch
ex
As
Exception
End
Try
End
If
End
Sub
Public
Overrides
Property
Visible
As
Boolean
Get
Return
MyBase
.Visible
End
Get
Set
(value
As
Boolean
)
MyBase
.Visible = value
End
Set
End
Property
Protected
Overrides
Function
GetCurrentFilterValueFromControl(
ByVal
cell
As
TableCell)
As
String
Dim
currentValue
As
String
=
DirectCast
(cell.Controls(0), RadComboBox).SelectedItem.Value
Me
.CurrentFilterFunction =
If
((currentValue <>
""
), GridKnownFunction.EqualTo, GridKnownFunction.NoFilter)
If
currentValue =
"-1"
Then
Return
Nothing
Return
currentValue
End
Function
Private
Sub
rcBox_SelectedIndexChanged(
ByVal
sender
As
Object
,
ByVal
e
As
Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs)
DirectCast
(
DirectCast
(sender, RadComboBox).Parent.Parent, GridFilteringItem).FireCommandEvent(
"Filter"
,
New
Pair())
Select
Case
e.Value
Case
0
CType
(sender, RadComboBox).InputCssClass =
"btnNoSeleccionado"
Case
1
CType
(sender, RadComboBox).InputCssClass =
"btnSeleccionado"
End
Select
End
Sub
Protected
Sub
rcBox_ItemCreated(o
As
Object
, e
As
RadComboBoxItemEventArgs)
e.Item.Height = 34
Select
Case
e.Item.Value
Case
0
e.Item.CssClass =
"btnNoSeleccionado"
Case
1
e.Item.CssClass =
"btnSeleccionado"
End
Select
End
Sub
End
Class
function
RowDblClick(sender, eventArgs) {
var
toolBar = $find(
"<%=radtoolMonths.ClientID%>"
);
var
intMonths = toolBar.get_items().get_count();
var
datMonth=
'1/1/14'
for
(
var
i = 0; i < intMonths; i++)
{
if
(toolBar.get_items().getItem(i).get_checked ==
true
) {
datMonth = toolBar.get_items().getItem(i).get_text;
}
}
<
telerik:RadTabStrip
ID
=
"radTabStrip1"
runat
=
"server"
Skin
=
"MetroTouch"
MultiPageID
=
"RadMultiPage1"
Width
=
"832px"
BorderStyle
=
"None"
SelectedIndex
=
"0"
OnTabClick
=
"radTabStrip1_TabClick"
>
<
Tabs
>
<
telerik:RadTab
Text
=
"History"
TabIndex
=
"0"
Selected
=
"True"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"Payment History"
TabIndex
=
"1"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"Email History"
TabIndex
=
"2"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"Notes"
TabIndex
=
"3"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"Invoice History"
TabIndex
=
"4"
>
</
telerik:RadTab
>
</
Tabs
>
</
telerik:RadTabStrip
>
<
div
id
=
"TabBorder"
runat
=
"server"
style
=
"width:100%; height:5px; "
></
div
>
<
telerik:RadMultiPage
ID
=
"RadMultiPage1"
runat
=
"server"
SelectedIndex
=
"0"
Width
=
"832px"
>
<
telerik:RadPageView
ID
=
"RadPageView1"
runat
=
"server"
Height
=
"508px"
Width
=
"832px"
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"grdHistory"
DataSourceID
=
"objHistory"
Width
=
"100%"
Skin
=
"MetroTouch"
AllowPaging
=
"true"
PageSize
=
"10"
>
<
MasterTableView
AutoGenerateColumns
=
"false"
CssClass
=
"GridHistory"
>
<
PagerStyle
AlwaysVisible
=
"true"
Mode
=
"Slider"
></
PagerStyle
>
<
HeaderStyle
CssClass
=
"HistoryGridHeader"
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Status"
HeaderText
=
"Status"
UniqueName
=
"Status"
>
<
HeaderStyle
Width
=
"140px"
/>
<
ItemStyle
CssClass
=
"FirstColumn"
Font-Bold
=
"true"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"Description"
HeaderText
=
"Description"
UniqueName
=
"Description"
>
<
HeaderStyle
Width
=
"460px"
/>
<
ItemTemplate
>
<
asp:Label
runat
=
"server"
id
=
"lblDescription"
Text='<%# Eval("Description") %>' />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"Date"
HeaderText
=
"Date"
UniqueName
=
"Date"
>
<
HeaderStyle
Width
=
"234px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ClientId"
HeaderText
=
"ClientId"
UniqueName
=
"ClientId"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView2"
runat
=
"server"
Height
=
"508px"
Width
=
"832px"
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"grdPaymentHistory"
DataSourceID
=
"objPaymentHistory"
Skin
=
"MetroTouch"
AllowPaging
=
"true"
PageSize
=
"10"
>
<
HeaderStyle
CssClass
=
"HistoryGridHeader"
/>
<
PagerStyle
AlwaysVisible
=
"true"
Mode
=
"Slider"
></
PagerStyle
>
<
MasterTableView
AutoGenerateColumns
=
"false"
CssClass
=
"GridHistory"
>
<
Columns
>
<
telerik:GridTemplateColumn
DataField
=
"Description"
HeaderText
=
"Description"
UniqueName
=
"Description"
>
<
ItemStyle
CssClass
=
"FirstColumn"
/>
<
HeaderStyle
Width
=
"250px"
/>
<
ItemTemplate
>
<
asp:Label
runat
=
"server"
id
=
"Label1"
Text='<%# Eval("Description") %>' />
<
asp:Label
runat
=
"server"
id
=
"lblUser"
Text='<%# Eval("Username") %>' />
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"PaymentAmount"
HeaderText
=
"Payment Amount"
UniqueName
=
"PaymentAmount"
DataFormatString
=
"{0:C}"
>
<
HeaderStyle
Width
=
"250px"
HorizontalAlign
=
"Center"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"DateRecieved"
HeaderText
=
"Date Received"
UniqueName
=
"DateRecieved"
DataFormatString
=
"{0:MM/dd/yyyy}"
>
<
HeaderStyle
Width
=
"234px"
HorizontalAlign
=
"Center"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ClientId"
HeaderText
=
"ClientId"
UniqueName
=
"ClientId"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView3"
runat
=
"server"
Height
=
"508px"
Width
=
"832px"
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"grdEmailHistory"
DataSourceID
=
"objEmailHistory"
Skin
=
"MetroTouch"
AllowPaging
=
"true"
PageSize
=
"10"
>
<
HeaderStyle
CssClass
=
"HistoryGridHeader"
/>
<
PagerStyle
AlwaysVisible
=
"true"
Mode
=
"Slider"
></
PagerStyle
>
<
MasterTableView
AutoGenerateColumns
=
"false"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"SentTo"
HeaderText
=
"To"
UniqueName
=
"SentTo"
>
<
HeaderStyle
Width
=
"225px"
/>
<
ItemStyle
CssClass
=
"FirstColumn"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Subject"
HeaderText
=
"Subject"
UniqueName
=
"Subject"
>
<
HeaderStyle
Width
=
"115px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Date"
HeaderText
=
"Date"
UniqueName
=
"Date"
DataFormatString
=
"{0:MM/dd/yyyy}"
>
<
HeaderStyle
HorizontalAlign
=
"Center"
Width
=
"100px"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ClientId"
HeaderText
=
"ClientId"
UniqueName
=
"ClientId"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"View Email"
UniqueName
=
"Id"
HeaderStyle-HorizontalAlign
=
"Center"
>
<
ItemStyle
BorderStyle
=
"None"
Width
=
"57px"
HorizontalAlign
=
"Center"
/>
<
ItemTemplate
>
<
a
href
=
"#"
onclick
=
"OpenWindow('<%# DataBinder.Eval(Container.DataItem, "
Id") %>'); return false;">
<
asp:Image
ID
=
"EmailImage"
runat
=
"server"
ImageUrl
=
"~/Images/Icons/Test/Email.png"
AlternateText
=
"View Email"
ToolTip
=
"View Email"
style
=
"border:none"
/>
</
a
>
</
div
>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView4"
runat
=
"server"
Height
=
"200px"
Width
=
"832px"
>
<
telerik:RadTextBox
ID
=
"txtNotes"
runat
=
"server"
Height
=
"191px"
TextMode
=
"MultiLine"
Width
=
"832px"
BorderStyle
=
"None"
BorderColor
=
"#EDEDED"
>
</
telerik:RadTextBox
>
<
div
style
=
"height:100px"
/>
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView5"
runat
=
"server"
Height
=
"191px"
Width
=
"832px"
>
<
telerik:RadGrid
runat
=
"server"
ID
=
"grdInvoiceHistory"
DataSourceID
=
"objInvoiceHistory"
Width
=
"100%"
GridLines
=
"Horizontal"
Skin
=
"Sunset"
AllowPaging
=
"true"
>
<
ClientSettings
>
<
ClientEvents
OnRowMouseOver
=
"GetRowId"
/>
</
ClientSettings
>
<
MasterTableView
AutoGenerateColumns
=
"false"
CssClass
=
"GridHistory"
DataKeyNames
=
"Id"
ClientDataKeyNames
=
"Id"
>
<
HeaderStyle
CssClass
=
"HistoryGridHeader"
/>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Id"
HeaderText
=
"Id"
UniqueName
=
"Id"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
DataField
=
"InvoiceNo"
UniqueName
=
"InvoiceNo"
HeaderText
=
"Invoice No"
>
<
ItemTemplate
>
<
asp:LinkButton
runat
=
"server"
ID
=
"lnkInvoiceNo"
Text='<%# Eval("InvoiceNo") %>'
OnClientClick="SetInvoiceParameters()" OnCommand="lnkInvoiceNo_Command" />
</
ItemTemplate
>
<
ItemStyle
CssClass
=
"FirstColumn"
/>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"InvoiceDate"
HeaderText
=
"Date Created"
UniqueName
=
"InvoiceDate"
DataFormatString
=
"{0:MM/dd/yyyy}"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Status"
HeaderText
=
"Status"
UniqueName
=
"Status"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"RecurringId"
HeaderText
=
"RecurringId"
UniqueName
=
"RecurringId"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"CustomerId"
HeaderText
=
"CustomerId"
UniqueName
=
"CustomerId"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"CompanyId"
HeaderText
=
"CompanyId"
UniqueName
=
"CompanyId"
Visible
=
"false"
>
</
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
DefaultLoadingPanelID
=
"RadAjaxLoadingPanel2"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"grdHistory"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"grdHistory"
LoadingPanelID
=
"RadAjaxLoadingPanel2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"grdPaymentHistory"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"grdPaymentHistory"
LoadingPanelID
=
"RadAjaxLoadingPanel2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"grdEmailHistory"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"grdEmailHistory"
LoadingPanelID
=
"RadAjaxLoadingPanel2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"txtNotes"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"txtNotes"
LoadingPanelID
=
"RadAjaxLoadingPanel2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"grdInvoiceHistory"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"grdInvoiceHistory"
LoadingPanelID
=
"RadAjaxLoadingPanel2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"grdDisputeHistory"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"grdDisputeHistory"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
<
telerik:AjaxSetting
AjaxControlID
=
"radTabStrip1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"radTabStrip1"
LoadingPanelID
=
"RadAjaxLoadingPanel2"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
</
div
>
protected
void
radTabStrip1_TabClick(
object
sender, RadTabStripEventArgs e)
{
radTabStrip1.Tabs[0].BackColor = System.Drawing.ColorTranslator.FromHtml(
"#f9f9f9"
);
radTabStrip1.Tabs[0].ForeColor = System.Drawing.ColorTranslator.FromHtml(
"#000000"
);
radTabStrip1.Tabs[1].BackColor = System.Drawing.ColorTranslator.FromHtml(
"#f9f9f9"
);
radTabStrip1.Tabs[1].ForeColor = System.Drawing.ColorTranslator.FromHtml(
"#000000"
);
radTabStrip1.Tabs[2].BackColor = System.Drawing.ColorTranslator.FromHtml(
"#f9f9f9"
);
radTabStrip1.Tabs[2].ForeColor = System.Drawing.ColorTranslator.FromHtml(
"#000000"
);
radTabStrip1.SelectedTab.BackColor = System.Drawing.ColorTranslator.FromHtml(_statusColor);
radTabStrip1.SelectedTab.ForeColor = Color.White;
}