or
I have a template definition as below:
public class BoundTemplate : System.Web.UI.ITemplate |
{ |
public ListItemType templateType; |
public string columnName, dataType, timeZone, sortExpression; |
public bool convertTZ; |
public event CommandEventHandler OnSorting; |
public BoundTemplate(ListItemType type, string colName, string sortExpression) |
{ |
templateType = type; |
this.columnName = colName; |
this.sortExpression = sortExpression; |
} |
public BoundTemplate(ListItemType type, string colName, CommandEventHandler sortHandler, string sortExpression) |
{ |
templateType = type; |
this.columnName = colName; |
this.OnSorting = sortHandler; |
this.sortExpression = sortExpression; |
} |
public BoundTemplate(ListItemType type, string colName, string dataType, string timeZone, bool convertTZ) |
{ |
templateType = type; |
this.columnName = colName; |
this.dataType = dataType; |
this.timeZone = timeZone; |
this.convertTZ = convertTZ; |
} |
public void InstantiateIn(Control container) |
{ |
switch (templateType) |
{ |
case ListItemType.Header: |
if (OnSorting != null) |
{ |
LinkButton lb = new LinkButton(); |
lb.Text = columnName; |
//lb.CommandName = "Sort"; |
lb.Command += new CommandEventHandler(lb_Command); |
lb.CommandArgument = sortExpression; |
container.Controls.Add(lb); |
} |
else |
{ |
Label lbl = new Label(); |
lbl.Text = columnName; |
container.Controls.Add(lbl); |
} |
break; |
case ListItemType.Item: |
case ListItemType.AlternatingItem: |
Label dataLabel = new Label(); |
dataLabel.Text = columnName; |
container.Controls.Add(dataLabel); |
dataLabel.DataBinding += new EventHandler(Item_DataBinding); |
break; |
case ListItemType.Footer: |
break; |
} |
} |
public void lb_Command(object sender, CommandEventArgs e) |
{ |
if (OnSorting == null) |
throw new Exception("Sort handler is not hooked up."); |
OnSorting(sender, e); |
} |
} |
In the code behind I add the control to the grid dynamically as below:
GridTemplateColumn tfield = new GridTemplateColumn(); |
BoundTemplate headerTemplate = new BoundTemplate(ListItemType.Header, displayName, fieldName); |
if (field.SelectSingleNode("@sortable") != null && field.SelectSingleNode("@sortable").Value == "true") |
headerTemplate.OnSorting += new CommandEventHandler(SortGrid4TemplateFields); |
tfield.HeaderTemplate = headerTemplate; |
tfield.ItemTemplate = new BoundTemplate(ListItemType.Item, columnName, dataType, timeZone, convertTZ); |
tfield.ItemStyle.HorizontalAlign = SetAlignment(alignment); |
tfield.DataField = columnName; |
tfield.UniqueName = fieldName; |
//tfield.DataType = Type.GetType(dataType); |
tfield.SortExpression = fieldName; |
//tfield.FilterListOptions = GridFilterListOptions.VaryByDataType; |
RadGrid1.MasterTableView.Columns.Add(tfield); |
And finally, i have set the grid properties as below:
<telerik:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="true" AllowSorting="true" AllowPaging="true" PageSize="10" OnSortCommand="CustomSort"> |
<MasterTableView AutoGenerateColumns="false" AllowCustomSorting="true"></MasterTableView> </telerik:RadGrid> |
<%@ Register Assembly="Telerik.Web.UI, Version=2011.2.712.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"
Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<
asp:Content
ID
=
"PageHead"
ContentPlaceHolderID
=
"PlaceHolderAdditionalPageHead"
runat
=
"server"
>
</
asp:Content
>
<
asp:Content
ID
=
"Main"
ContentPlaceHolderID
=
"PlaceHolderMain"
runat
=
"server"
>
Content above the TabStrip!!
<
telerik:RadTabStrip
ID
=
"RadTabStrip1"
runat
=
"server"
Skin
=
"Vista"
MultiPageID
=
"RadMultiPage1"
SelectedIndex
=
"0"
Align
=
"Justify"
ReorderTabsOnSelect
=
"true"
Width
=
"347px"
>
<
Tabs
>
<
telerik:RadTab
Text
=
"General"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"Tools"
>
</
telerik:RadTab
>
<
telerik:RadTab
Text
=
"Hardware"
>
</
telerik:RadTab
>
</
Tabs
>
</
telerik:RadTabStrip
>
<
telerik:RadMultiPage
ID
=
"RadMultiPage1"
runat
=
"server"
SelectedIndex
=
"0"
CssClass
=
"pageView"
Width
=
"345px"
>
<
telerik:RadPageView
ID
=
"RadPageView1"
runat
=
"server"
>
First content.
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView2"
runat
=
"server"
>
Second content.
</
telerik:RadPageView
>
<
telerik:RadPageView
ID
=
"RadPageView3"
runat
=
"server"
>
Third content.
</
telerik:RadPageView
>
</
telerik:RadMultiPage
>
</
asp:Content
>
<
asp:Content
ID
=
"PageTitle"
ContentPlaceHolderID
=
"PlaceHolderPageTitle"
runat
=
"server"
>
Application Page
</
asp:Content
>
<
asp:Content
ID
=
"PageTitleInTitleArea"
ContentPlaceHolderID
=
"PlaceHolderPageTitleInTitleArea"
runat
=
"server"
>
My Application Page
</
asp:Content
>
function conditionalPostback(sender, eventArgs) {
var theRegexp = new RegExp("\.UpdateButton$|\.PerformInsertButton$", "ig");
if (eventArgs.get_eventTarget().match(theRegexp)) {
var upload = $find(window['UploadId']);
var uploadmid = $find(window['UploadIdMid']);
var uploadthumb = $find(window['UploadIdThumb']);
// Test script for all
if (upload.getFileInputs()[0].value != "" || uploadmid.getFileInputs()[0].value != "" || uploadthumb.getFileInputs()[0].value != "") {
eventArgs.set_enableAjax(false);
}
}
}
.RadTextBox_Vista .rcbInputCell .rcbInput { |
font-size: 12px !important; |
padding: 2px 0 2px 1px !important; |
} |
.RadTextBox_Vista .rcbArrowCell a{ |
height: 20px !important; |
} |
<
div
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
Skin
=
"Black"
/>
</
div
>--%>
<
br
/>
<%-- <
div
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadGrid1"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
Skin
=
"Black"
/>
</
div
>--%>
<
table
>
<
tr
>
<
td
>
<
telerik:RadButton
ID
=
"ShowProcessed"
runat
=
"server"
Text
=
"Show Processed"
Skin
=
"Black"
Width
=
"110px"
Height
=
"40px"
OnClick
=
"ShowProcessed_Click"
>
</
telerik:RadButton
>
</
td
>
<
td
>
</
td
>
<
td
>
<
telerik:RadButton
ID
=
"ShowUnProcessed"
runat
=
"server"
Text
=
"Show Unprocessed"
Skin
=
"Black"
Width
=
"120px"
Height
=
"40px"
OnClick
=
"ShowUnProcessed_Click"
>
</
telerik:RadButton
>
</
td
>
</
tr
>
<
tr
>
<
td
>
</
td
>
</
tr
>
</
table
>
<
telerik:RadGrid
ID
=
"RadGrid1"
runat
=
"server"
GridLines
=
"None"
AllowPaging
=
"True"
AllowSorting
=
"True"
AutoGenerateColumns
=
"False"
Width
=
"97%"
enableajax
=
"True"
AllowFilteringByColumn
=
"True"
ShowFooter
=
"True"
Skin
=
"Black"
OnItemCommand
=
"RadGrid1_ItemCommand"
OnGridExporting
=
"RadGrid1_GridExporting"
AllowMultiRowSelection
=
"True"
OnNeedDataSource
=
"RadGrid1_NeedDataSource"
>
<
PagerStyle
Mode
=
"NextPrevAndNumeric"
></
PagerStyle
>
<
ClientSettings
AllowColumnsReorder
=
"True"
ReorderColumnsOnClient
=
"True"
EnablePostBackOnRowClick
=
"true"
>
<
Selecting
AllowRowSelect
=
"True"
/>
</
ClientSettings
>
<
MasterTableView
DataKeyNames
=
"SequencialNumber"
Width
=
"100%"
CommandItemSettings-ShowExportToCsvButton
=
"True"
CommandItemSettings-ShowAddNewRecordButton
=
"false"
CommandItemDisplay
=
"Top"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"SequencialNumber"
HeaderText
=
"SequencialNumber"
UniqueName
=
"SequencialNumber"
SortExpression
=
"SequencialNumber"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Priorities.Priority"
HeaderText
=
"Priority"
UniqueName
=
"Priority"
FilterControlAltText
=
"Filter Priority column"
SortExpression
=
"Priorities.Priority"
DataType
=
"System.Int32"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Staging.Process"
HeaderText
=
"Staging"
UniqueName
=
"Process"
SortExpression
=
"Staging.Process"
FilterControlAltText
=
"Filter Process column"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"SupplierCode"
HeaderText
=
"SupplierCode"
UniqueName
=
"SupplierCode"
SortExpression
=
"SupplierCode"
FilterControlAltText
=
"Filter SupplierCode column"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"MessageStatus"
HeaderText
=
"MessageStatus"
UniqueName
=
"MessageStatus"
SortExpression
=
"MessageStatus"
FilterControlAltText
=
"Filter MessageStatus column"
>
</
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"DocumentType"
HeaderText
=
"DocumentType"
UniqueName
=
"DocumentType"
FilterControlAltText
=
"Filter DocumentType column"
SortExpression
=
"DocumentType"
>
</
telerik:GridBoundColumn
>
<
telerik:GridDateTimeColumn
UniqueName
=
"InvoiceCreationDate"
DataField
=
"InvoiceCreationDate"
HeaderText
=
"InvoiceCreationDate"
FilterControlAltText
=
"Filter InvoiceCreationDate column"
SortExpression
=
"InvoiceCreationDate"
>
<
FilterTemplate
>
<
telerik:RadDatePicker
ID
=
"RadDatePicker1"
runat
=
"server"
>
</
telerik:RadDatePicker
>
</
FilterTemplate
>
</
telerik:GridDateTimeColumn
>
<
telerik:GridBoundColumn
DataField
=
"SupplierVatNumber"
FilterControlAltText
=
"Filter SupplierVatNumber column"
HeaderText
=
"SupplierVatNumber"
SortExpression
=
"SupplierVatNumber"
UniqueName
=
"SupplierVatNumber"
>
</
telerik:GridBoundColumn
>
</
Columns
>
<
ExpandCollapseColumn
Visible
=
"False"
>
<
HeaderStyle
Width
=
"19px"
></
HeaderStyle
>
</
ExpandCollapseColumn
>
<
CommandItemSettings
ShowAddNewRecordButton
=
"False"
ShowExportToCsvButton
=
"True"
>
</
CommandItemSettings
>
<
RowIndicatorColumn
Visible
=
"False"
>
<
HeaderStyle
Width
=
"20px"
/>
</
RowIndicatorColumn
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
>
</
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
<
FilterMenu
EnableImageSprites
=
"False"
>
</
FilterMenu
>
<
HeaderContextMenu
CssClass
=
"GridContextMenu GridContextMenu_Default"
>
</
HeaderContextMenu
>
</
telerik:RadGrid
>