radFileExplorer.Grid.ID = radGridViewName;
radFileExplorer.Grid.AllowSorting = true;
radFileExplorer.Grid.ItemDataBound += new GridItemEventHandler(radFileExplorer_ItemDataBound);
radFileExplorer.Grid.SortCommand += new GridSortCommandEventHandler(radFileExplorer_SortCommand);
radFileExplorer.TreeView.NodeClick += new RadTreeViewEventHandler(treeView_NodeClick);
Below is the code written for radFileExplorer_SortCommand event. The below event is not getting invoked on click of the column header.
void
radFileExplorer_SortCommand(object sender, GridSortCommandEventArgs e)
{
string sortDir = "ASC";
DataView dv = new DataView(Documents);
string viewStateKey = "sortDirection" + e.SortExpression;
if (ViewState[viewStateKey] != null)
{
sortDir = ((string)ViewState[viewStateKey] == "ASC") ? "DESC" : "ASC";
}
ViewState[viewStateKey] = sortDir;
dv.Sort = e.SortExpression +
" " + sortDir;
SortExpression = dv.Sort;
GridView docListGrid = (GridView)this.FindControl(radGridViewName);
if (docListGrid != null)
{
docListGrid.DataSource = dv;
docListGrid.DataBind();
}
}
This is quite urgent and any help would be appriciated.
Many thanks in advance.
Regards
Rajeev
public
void
Page_Load(
object
sender, EventArgs e)
{
// Get Total ProcessTemplates
SqlConnection conn =
new
SqlConnection(ConfigurationManager.ConnectionStrings[
"MSCBE.DashboardConnectionString"
].ConnectionString);
SqlCommand cmd =
new
SqlCommand(
"SELECT COUNT(ProcessTemplate_id) AS total FROM ProcessTemplate"
, conn);
conn.Open();
int
intTotalProcessTemplates = Convert.ToInt32(cmd.ExecuteScalar());
conn.Close();
// Create grids
RadGrid[] GridName =
new
RadGrid[intTotalProcessTemplates];
for
(
int
i = 0; i < intTotalProcessTemplates; ++i)
{
// Create mastertable
GridName[i] =
new
RadGrid();
GridName[i].DataSource = GetDataTables.GetDataTable(
"SELECT * FROM ProcessTemplate WHERE ProcessTemplate_id = "
+ (i + 1));
GridName[i].MasterTableView.DataKeyNames =
new
string
[] {
"ProcessTemplate_id"
};
GridName[i].Skin =
"Black"
;
GridName[i].AutoGenerateColumns =
false
;
GridName[i].AllowPaging =
true
;
GridName[i].ShowStatusBar =
true
;
// Columns create
GridName[i].MasterTableView.Columns.Add(CreateGridColumn(
"Process name"
,
"Name"
, 10.0));
GridName[i].MasterTableView.Columns.Add(CreateGridColumn(
"Process description"
,
"Description"
, 80.0));
GridName[i].MasterTableView.Columns.Add(CreateGridColumn(
"Parent"
,
"Parent"
, 10.0));
// Create detail table
GridTableView tableViewStartProcesses =
new
GridTableView(GridName[i]);
tableViewStartProcesses.Name =
"DetailTable_"
+ i;
tableViewStartProcesses.DataKeyNames =
new
string
[] {
"Process_id"
};
tableViewStartProcesses.AutoGenerateColumns =
false
;
tableViewStartProcesses.AllowPaging =
true
;
tableViewStartProcesses.ShowFooter =
true
;
tableViewStartProcesses.ShowHeadersWhenNoRecords =
true
;
tableViewStartProcesses.CommandItemDisplay = GridCommandItemDisplay.Top;
// Reset Counter
//Count[i] = new int();
int
counter = 0;
CountItems countitem =
new
CountItems();
countitem.id = i;
// Fix result from stored proc: GetAllProcessesAndSteps_SP
DataSet _dataset = BLProcessesAndSteps.GetAllProcessesAndSteps((i + 1));
if
(_dataset.Tables.Count > 0)
{
var query = from r
in
_dataset.Tables[0].AsEnumerable()
where r.Field<
decimal
>(
"templateid"
) == (i + 1)
// DO NOT REMOVE FROM STORED PROC
select r;
// Get total columns
int
TotalColumns = query.AsDataView().Table.Columns.Count;
GridBoundColumn[] gbcColumnName =
new
GridBoundColumn[TotalColumns];
// Loop trough header items
for
(
int
j = 0; j < TotalColumns; ++j)
{
// Create detailcolumns
gbcColumnName[j] =
new
GridBoundColumn();
gbcColumnName[j].ReadOnly =
true
;
string
strData = query.AsDataView().Table.Columns[j].ToString();
if
(strData ==
"Process_id"
|| strData ==
"templateId"
|| strData ==
"ProcessName"
)
{
gbcColumnName[j].Visible =
false
;
gbcColumnName[j].ReadOnly =
true
;
}
string
strQuery =
"SELECT DISTINCT(CriteriaType.Name), CriteriaType.CriteriaType_id, Process.ProcessTemplate_id FROM CriteriaType INNER JOIN CriteriaValue ON CriteriaType.CriteriaType_id = CriteriaValue.CriteriaType_id INNER JOIN Process ON CriteriaValue.Process_id = Process.Process_id WHERE Process.ProcessTemplate_id = "
+ (i + 1);
DataTable dtCriteriaTypes = GetDataTables.GetDataTable(strQuery);
string
[] strValues =
new
string
[dtCriteriaTypes.AsDataView().Table.Rows.Count];
for
(
int
k = 0; k < dtCriteriaTypes.AsDataView().Table.Rows.Count; ++k)
{
strValues[k] = dtCriteriaTypes.AsDataView().Table.Rows[k][
"Name"
].ToString();
if
(strData == strValues[k])
{
gbcColumnName[j].ReadOnly =
false
;
counter++;
}
}
countitem.count=counter;
gbcColumnName[j].HeaderText = strData;
gbcColumnName[j].DataField = strData;
// Add detailcolumns
tableViewStartProcesses.Columns.Add(gbcColumnName[j]);
}
Count.Add(countitem);
// Add Details to table
GridName[i].MasterTableView.DetailTables.Add(tableViewStartProcesses);
// Rebind
tableViewStartProcesses.DataSource = query.AsDataView();
}
// Add to placeholder
this
.StartProcessPlaceHolder.Controls.Add(GridName[i]);
// Events
GridName[i].InsertCommand +=
new
GridCommandEventHandler(OverviewProcess_InsertCommand);
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="RadGridDynamicColumns._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
>Sample Rad Grid Example</
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
runat
=
"server"
/>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"RadGrid1"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"gvwPlayers"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
/>
<
telerik:RadGrid
id
=
"_radGrid"
runat
=
"server"
OnNeedDataSource
=
"radGrid_NeedDataSource"
AllowSorting
=
"true"
AutoGenerateColumns
=
"false"
Width
=
"100mm"
>
</
telerik:RadGrid
>
</
form
>
</
body
>
</
html
>
using
System;
using
Telerik.Web.UI;
namespace
RadGridDynamicColumns
{
// A test data class
public
class
Widget
{
public
string
Name {
get
;
set
; }
public
string
Description {
get
;
set
; }
}
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!IsPostBack)
{
this
._radGrid.Columns.Add(
new
GridBoundColumn { HeaderText =
"Name"
, DataField =
"Name"
});
this
._radGrid.Columns.Add(
new
GridBoundColumn { HeaderText =
"Description"
, DataField =
"Description"
});
}
}
public
Widget[] TestData =
new
[]
{
new
Widget { Name =
"FooBar"
, Description =
"WidgetFooBar"
},
new
Widget { Name =
"Harold"
, Description =
"Biggles"
}
};
protected
void
radGrid_NeedDataSource(
object
source, GridNeedDataSourceEventArgs e)
{
this
._radGrid.DataSource =
this
.TestData;
}
}
}