Hi all,
This is the first time I have used Telerik RadGrid and I am having trouble getting the basic sort to work. I have a 5 column grid that is bound to an Entity Framework Entity. I will post all my code below. What is happening is, I click on the column header, I can see it go to the DelegateGrid_SortCommand code and the sortexpression and oldsortorder values look correct but after stepping out of the code the column is still not sorted. BTW. I got this code from the sample on the website.
I am not sure what I am missing. I have 3 different grids on this page that will all need to have sort working.
Thanks in advance you for your help.
Rhonda
ASP Page code
Code behind.
This is the first time I have used Telerik RadGrid and I am having trouble getting the basic sort to work. I have a 5 column grid that is bound to an Entity Framework Entity. I will post all my code below. What is happening is, I click on the column header, I can see it go to the DelegateGrid_SortCommand code and the sortexpression and oldsortorder values look correct but after stepping out of the code the column is still not sorted. BTW. I got this code from the sample on the website.
I am not sure what I am missing. I have 3 different grids on this page that will all need to have sort working.
Thanks in advance you for your help.
Rhonda
ASP Page code
<
asp:ScriptManager
ID
=
"ScriptManager2"
runat
=
"server"
></
asp:ScriptManager
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"DelegateGrid"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"DelegateGrid"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
/>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
telerik:RadAjaxLoadingPanel
ID
=
"RadAjaxLoadingPanel1"
runat
=
"server"
>
</
telerik:RadAjaxLoadingPanel
>
<
asp:Panel
ID
=
"pnlDelegateMain"
runat
=
"server"
Visible
=
"true"
>
<
asp:Panel
ID
=
"pnlDelegate"
runat
=
"server"
CssClass
=
"roundedPanel"
Visible
=
"true"
>
<
div
style
=
"padding: 0 0 10px 20px; text-align: left"
>
<
asp:Label
ID
=
"pnlDelegateText"
Font-Size
=
"Small"
Text
=
"My Delegates"
runat
=
"server"
></
asp:Label
>
</
div
>
</
asp:Panel
>
<
telerik:RadGrid
ID
=
"DelegateGrid"
runat
=
"server"
Skin
=
"WF"
EnableEmbeddedSkins
=
"false"
AllowSorting
=
"true"
OnSortCommand
=
"DelegateGrid_SortCommand"
OnItemDataBound
=
"DelegateGrid_ItemDataBound"
Visible
=
"true"
>
<
MasterTableView
Width
=
"100%"
CommandItemDisplay
=
"Bottom"
AutoGenerateColumns
=
"false"
>
<
Columns
>
<
telerik:GridBoundColumn
DataField
=
"Name"
HeaderText
=
"Delegate Name"
UniqueName
=
"Name"
SortExpression
=
"Name"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"Apps"
HeaderText
=
"Applications"
UniqueName
=
"Apps"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"LastVerified"
HeaderText
=
"Last Verified"
UniqueName
=
"LastVerified"
SortExpression
=
"LastVerified"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"ActionRequired"
HeaderText
=
"Action Required"
UniqueName
=
"ActionRequired"
SortExpression
=
"ActionRequired"
></
telerik:GridBoundColumn
>
<
telerik:GridHyperLinkColumn
HeaderText
=
"Edit Delegate"
DataTextField
=
"Name"
ItemStyle-HorizontalAlign
=
"Left"
UniqueName
=
"EditDelegate"
HeaderStyle-Font-Bold
=
"false"
HeaderStyle-Wrap
=
"false"
DataNavigateUrlFields
=
"Id"
DataNavigateUrlFormatString
=
"Delegate.aspx?Id={0}"
HeaderStyle-Width
=
"150px"
></
telerik:GridHyperLinkColumn
>
</
Columns
>
</
MasterTableView
>
<
HeaderStyle
BackColor
=
"#666666"
Font-Names
=
"verdana, arial"
Font-Size
=
"Small"
Height
=
"20px"
/>
</
telerik:RadGrid
>
<
asp:Panel
ID
=
"pnlAddDelegate"
runat
=
"server"
Visible
=
"true"
>
<
div
class
=
"portalPanel"
>
<
asp:HyperLink
ID
=
"AddDelegate"
runat
=
"server"
NavigateUrl
=
"~/Delegate.aspx"
Text
=
"+ Add New Delegate"
></
asp:HyperLink
>
</
div
>
</
asp:Panel
>
<
asp:RoundedCornersExtender
ID
=
"RoundedCornersExtender1"
runat
=
"server"
BehaviorID
=
"RoundedCornersBehavior1"
TargetControlID
=
"pnlDelegate"
Radius
=
"10"
Corners
=
"TopLeft, TopRight"
/>
<
br
/><
br
/>
</
asp:Panel
>
Code behind.
public
List<Entities.Delegate> delegates;
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!Page.IsPostBack)
{
PopulateDelegatesGrid();
}
}
public
void
PopulateDelegatesGrid()
{
delegates = BusinessUtility.GetDelegatesByManager(
"0"
);
DelegateGrid.DataSource = delegates;
DelegateGrid.DataBind();
}
protected
void
DelegateGrid_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridCommandItem)
{
GridCommandItem cmditm = (GridCommandItem)e.Item;
cmditm.Visible =
false
;
//hide add new button
cmditm.FindControl(
"InitInsertButton"
).Visible =
false
;
//hide the text
cmditm.FindControl(
"AddNewRecordButton"
).Visible =
false
;
//hide the image
//hide Refresh button
cmditm.FindControl(
"RefreshButton"
).Visible =
false
;
//hide the text
cmditm.FindControl(
"RebindGridButton"
).Visible =
false
;
//hide the image
}
if
(e.Item
is
GridDataItem)
{
GridDataItem dataBoundItem = e.Item
as
GridDataItem;
string
Name = dataBoundItem[
"Name"
].Text;
foreach
(Entities.Delegate d
in
delegates)
{
if
(Name == d.Name)
{
string
AppList =
string
.Empty;
var applicationsNew = d.Applications;
foreach
(ApplicationBase a
in
applicationsNew)
{
AppList = AppList + a.Name +
" ("
+ a.WamId +
")</br>"
;
dataBoundItem[
"Apps"
].Text = AppList;
}
}
}
}
}
protected
void
DelegateGrid_SortCommand(
object
source, GridSortCommandEventArgs e)
{
GridSortExpression sortExpression =
new
GridSortExpression();
switch
(e.OldSortOrder)
{
case
GridSortOrder.None:
sortExpression.FieldName = e.SortExpression;
sortExpression.SortOrder = GridSortOrder.Descending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpression);
break
;
case
GridSortOrder.Ascending:
sortExpression.FieldName = e.SortExpression;
sortExpression.SortOrder = DelegateGrid.MasterTableView.AllowNaturalSort ? GridSortOrder.None : GridSortOrder.Descending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpression);
break
;
case
GridSortOrder.Descending:
sortExpression.FieldName = e.SortExpression;
sortExpression.SortOrder = GridSortOrder.Ascending;
e.Item.OwnerTableView.SortExpressions.AddSortExpression(sortExpression);
break
;
}
e.Canceled =
true
;
DelegateGrid.Rebind();
}