| <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ContentEditor.aspx.cs" Inherits="ContentEditor" %> |
| <!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></title> |
| <telerik:radscriptblock id="RadScriptBlock" runat="server"> |
| <script type="text/javascript"> |
| function rowSelected(sender, args) { |
| var key = args.getDataKeyValue("ContentId"); |
| var panel = $find("<%=RadXmlHttpPanel.ClientID%>"); |
| panel.set_value(key); |
| } |
| </script> |
| </telerik:radscriptblock> |
| </head> |
| <body> |
| <form id="form1" runat="server"> |
| <div> |
| <asp:scriptmanager id="ScriptManager" runat="server" /> |
| <div style="margin-bottom: 10px;"> |
| <label style="font-family:'segoe ui', arial, sans-serif;font-size:13px;">Group:</label> |
| <telerik:radcombobox id="ContentGroupRadComboBox" runat="server" datasourceid="ContentGroupDataSource" datatextfield="ContentGroupName" datavaluefield="ContentGroupId" appenddatabounditems="true" autopostback="true" width="210" > |
| <items> |
| <telerik:radcomboboxitem text="All" value="0" selected="true" /> |
| </items> |
| </telerik:radcombobox> |
| </div> |
| <telerik:radgrid id="ContentRadGrid" runat="server" datasourceid="ContentDataSource" allowpaging="true" autogeneratecolumns="false" width="250px" style="overflow:hidden"> |
| <mastertableview clientdatakeynames="ContentId"> |
| <columns> |
| <telerik:gridboundcolumn uniquename="ContentName" datafield="ContentName" headertext="Name" itemstyle-wrap="false" /> |
| </columns> |
| </mastertableview> |
| <clientsettings enablerowhoverstyle="true" selecting-allowrowselect="true"> |
| <clientevents onrowselected="rowSelected" ondatabound="" /> |
| </clientsettings> |
| <pagerstyle mode="NumericPages" showpagertext="false" /> |
| </telerik:radgrid> |
| <telerik:radajaxmanager id="RadAjaxManager" runat="server" enableajax="true" defaultloadingpanelid="RadAjaxLoadingPanel"> |
| <ajaxsettings> |
| <telerik:ajaxsetting ajaxcontrolid="ContentGroupRadComboBox"> |
| <updatedcontrols> |
| <telerik:ajaxupdatedcontrol controlid="ContentRadGrid" loadingpanelid="RadAjaxLoadingPanel" /> |
| <telerik:ajaxupdatedcontrol controlid="ContentGroupRadComoboBox" /> |
| </updatedcontrols> |
| </telerik:ajaxsetting> |
| </ajaxsettings> |
| </telerik:radajaxmanager> |
| <div style="margin-top: 25px;border: dashed 2px red;"> |
| <telerik:radxmlhttppanel id="RadXmlHttpPanel" runat="server" onservicerequest="RadXmlHttpPanel_ServiceRequest"> |
| <asp:label id="selectContentLabel" runat="server" text="Select a content item." /> |
| <asp:label id="selectedContentIdLabel" runat="server" /> |
| <telerik:radeditor id="RadEditor" runat="server" /> |
| </telerik:radxmlhttppanel> |
| </div> |
| <telerik:radajaxloadingpanel id="RadAjaxLoadingPanel" runat="server" /> |
| <asp:sqldatasource id="ContentGroupDataSource" runat="server" connectionstring="<%$ ConnectionStrings:InternationalConnectionString %>" selectcommand="SELECT [ContentGroupId], [ContentGroupName] FROM [IS].[ContentGroupInfo] WITH (NOLOCK) WHERE [StoreId] = '49D4B1F4-236B-DE11-870E-001A6465230E' AND [CultureId] = 1033" /> |
| <asp:sqldatasource id="ContentDataSource" runat="server" connectionstring="<%$ ConnectionStrings:InternationalConnectionString %>" /> |
| </div> |
| </form> |
| </body> |
| </html> |
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Web; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using Telerik.Web.UI; |
| public partial class ContentEditor : System.Web.UI.Page |
| { |
| protected void Page_Init(Object sender, EventArgs e) |
| { |
| } |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| if (ContentGroupRadComboBox.SelectedValue == "0") |
| { |
| ContentDataSource.SelectCommand = "SELECT [CI].[ContentGroupId], [CI].[ContentGroupName], [CI].[ContentId], [CI].[ContentName] FROM [IS].[ContentInfo] AS [CI] WITH (NOLOCK) WHERE [CI].[StoreId] = '49D4B1F4-236B-DE11-870E-001A6465230E' AND [CI].[CultureId] = 1033"; |
| ContentRadGrid.DataBind(); |
| } |
| else |
| { |
| ContentDataSource.SelectCommand = "SELECT [CI].[ContentGroupId], [CI].[ContentGroupName], [CI].[ContentId], [CI].[ContentName] FROM [IS].[ContentInfo] AS [CI] WITH (NOLOCK) WHERE [CI].[StoreId] = '49D4B1F4-236B-DE11-870E-001A6465230E' AND [CI].[ContentGroupId] = '" + ContentGroupRadComboBox.SelectedValue + "' AND [CI].[CultureId] = 1033"; |
| ContentRadGrid.DataBind(); |
| } |
| } |
| protected void RadXmlHttpPanel_ServiceRequest(Object sender, RadXmlHttpPanelEventArgs e) |
| { |
| String selectedContentId = e.Value; |
| selectedContentIdLabel.Text = selectedContentId; |
| selectContentLabel.Visible = false; |
| RadEditor.Content = selectedContentId; |
| } |
| } |
| var grid = $find("<%= RadGrid1.ClientID %>"); |
| var masterTable = grid.get_masterTableView(); var row = masterTable.SelectedRow; |
| var colid = row.Column["SupplierID"]; // access by name |
| alert(colid); |
| var col3 = row.Column[2]; // access by index |
| alert(col3); |

| <telerik:GridTemplateColumn UniqueName="emailprimaryuser" HeaderText="Email Primary User" |
| ReadOnly="true" DataField="emailprimaryuser" SortExpression="emailprimaryuser"> |
| <ItemTemplate> |
| <asp:CheckBox Enabled="false" ID="chkemailprimaryuser" runat="server" Checked='<%# DataBinder.Eval (Container.DataItem,"emailprimaryuser").ToString()="Y" %>' |
| /> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
When a GridDateTimeColumn is bound to a nested object (e.g. DataField="SomeObject.DateField"), column sorting is broken. The sorting appears to be based on the alphanumeric order. Here is the test code below with a workaround and a workaround attempt that causes an exception:
default.aspx:
| <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> |
| <%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head runat="server"> |
| <title>Untitled Page</title> |
| </head> |
| <body> |
| <form id="form1" runat="server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server" /> |
| <div> |
| <telerik:RadGrid AllowSorting="true" AllowPaging="true" PageSize="25" ID="RadGrid1" runat="server" |
| OnNeedDataSource="RadGrid1_NeedDataSource"> |
| <MasterTableView AutoGenerateColumns="false"> |
| <Columns> |
| <telerik:GridDateTimeColumn |
| DataFormatString="{0:MM/dd/yyyy}" |
| DataField="RefDate" |
| UniqueName="Column0" |
| HeaderText="ParentObj"> |
| </telerik:GridDateTimeColumn> |
| <telerik:GridDateTimeColumn |
| DataFormatString="{0:MM/dd/yyyy}" |
| DataField="Dobj.RefDate1" |
| UniqueName="Column1" |
| HeaderText="ChildObj"> |
| </telerik:GridDateTimeColumn> |
| <telerik:GridTemplateColumn |
| SortExpression='Dobj.RefDate1.ToString("s")' |
| UniqueName="Column2" |
| HeaderText="WorkAround1"> |
| <ItemTemplate> |
| <asp:Label ID="Label1" runat="server" |
| Text='<%# String.Format("{0:MM/dd/yyyy}", Eval("Dobj.RefDate1")) %>' |
| > |
| </asp:Label> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| <telerik:GridDateTimeColumn |
| SortExpression='Dobj.RefDate2.ToString("s")' |
| DataFormatString="{0:MM/dd/yyyy}" |
| DataField="Dobj.RefDate2" |
| UniqueName="Column3" |
| HeaderText="WorkAround2"> |
| </telerik:GridDateTimeColumn> |
| </Columns> |
| </MasterTableView> |
| </telerik:RadGrid> |
| </div> |
| </form> |
| </body> |
| </html> |
default.aspx.cs:
| using System; |
| using System.Data; |
| using System.Configuration; |
| using System.Web; |
| using System.Web.Security; |
| using System.Web.UI; |
| using System.Web.UI.WebControls; |
| using System.Web.UI.WebControls.WebParts; |
| using System.Web.UI.HtmlControls; |
| using System.Collections.Generic; |
| public partial class _Default : System.Web.UI.Page |
| { |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| } |
| protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e) |
| { |
| RadGrid1.DataSource = GetDataList(); |
| } |
| protected List<PObject> GetDataList() |
| { |
| DateTime refdt = new DateTime(2008, 12, 20); |
| var dlist = new List<PObject>(); |
| for (int i = 1; i < 20; i++) |
| { |
| var dt = refdt.AddDays(i); |
| dlist.Add( |
| new PObject |
| { |
| Dobj = new DObject { RefDate1 = dt, RefDate2 = dt }, |
| RefDate = dt |
| } |
| ); |
| } |
| return dlist; |
| } |
| } |
| public class PObject |
| { |
| public DObject Dobj { get; set; } |
| public DateTime RefDate { get; set; } |
| } |
| public class DObject |
| { |
| public DateTime RefDate1 { get; set; } |
| public DateTime RefDate2 { get; set; } |
| } |
You will notice that the first column "ParentObj" sorts fine since the bound property is part of the data object. The second column "ChildObj" is bound to a nested/child object of the main data object. This one does not sort properly. The third column "WorkAround1" is a way to work around the problem using a GridTemplateColumn and a SortExpression using .ToString("s"). Since using a GridTemplateColumn is kind of cumbersome, I thought I'd try adding the .ToString("s") to the SortExpression of a GridDateTimeColumn, but this causes an exception. This is demonstrated when trying sort the "WorkAround2" column. Although this exception should probably fixed anyway (it doesn't make sense that it works for a GridTemplateColumn and not any other kind of bound column), getting the grid to support sorting on a DateTime property of a nested object either way is fine with me.
I have to generate simple graph at the run time which is based on couple of group and I have problem with it.
Here is the Data
|
Total |
Year |
Type |
|
4 |
2009 |
Type1 |
|
1 |
2008 |
Type1 |
|
2 |
2008 |
Type2 |
|
3 |
2008 |
Type3 |
So my X – axis will have Year and Y axis will be Total. I need to show Type for each Year. Since Type is missing for the Year 2009, I have seeing this issue.