We have a web page which has a Telerik RadGrid control inside a table structure. We represent text data on the radgrid and the users have the ability to export the data to an excel.
While exporting the data if any of the cells contains a text ( <number > <letter E > < number) example as '3E7'
, the exported excel displays this as 3.00E+04 (in excels scientific representation). We tried to address this issue by capturing OnExcelExportCellFormatting method of the radgrid excel export and injecting custom style to the cell.
Example code below:
if (e.FormattedColumn.UniqueName == "TierModel")
e.Cell.Style["mso-number-format"] = @"00000000";
Still whenever the radgrid cell contains a data like ( <number > <letter E > < number) , it’s still represented in the scientific way. Is there any way to control the export of these specific text into excel? Any other styles which will solve this issue?
Also if you have any alternate approaches please let us know.
Thanks !!
<telerik:GridButtonColumn UniqueName="DeleteColumn" ButtonType="ImageButton"CommandName="Delete" Text="Delete Session" ImageUrl="~/Images/Delete.gif"HeaderText="Delete" HeaderStyle-Width="40"ConfirmTitle="Delete" ConfirmDialogType="RadWindow"ConfirmTextFields="sessionName" ConfirmTextFormatString="Delete session '{0}'?"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AMEC_DCR.aspx.cs" Inherits="eB.PlugIn.AMEC.AMEC_DCR" MaintainScrollPositionOnPostback="true" MasterPageFile="~/Framework/MasterPages/ObjectDisplay.Master" ResponseEncoding="utf-8" %><%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI, Version=2013.1.403.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4" %><asp:Content runat="server" ID="titleC" ContentPlaceHolderID="headerContents"></asp:Content><asp:Content ID="body" ContentPlaceHolderID="bodyContents" runat="server"> <asp:Table ID="Table1" runat="server"> <asp:TableRow ID="head" runat="server"> <asp:TableCell ID="TableCell1" runat="server" Width="137px"> <asp:Image ID="Image1" runat="server" ImageUrl="./images/amec_logo.png" /> </asp:TableCell> <asp:TableCell runat="server"><asp:Image runat="server" ID="OrgLogo"/></asp:TableCell> <asp:TableCell ID="TableCell2" runat="server" HorizontalAlign="Left" VerticalAlign="Middle"> <asp:Label ID="Label1" runat="server" Font-Size="16" Text="Supplier Data Collection System" /> <br /> <asp:Label ID="Label5" runat="server" Text="Project: " /> <asp:Label ID="lblProjectNameValue" runat="server" Text="TO DO" /> <br /> <asp:Label ID="Label6" runat="server" Text="Supplier: " /> <asp:Label ID="lblSupplierValue" runat="server" /> <br /> <asp:Label ID="Label2" runat="server" Text="PO Number: " /> <asp:Label ID="lblPoNameValue" runat="server" ForeColor="red" /> <br /> <br /> </asp:TableCell></asp:TableRow> <asp:TableRow ID="TableRow7" runat="server"> <asp:TableCell ID="RadGridTagsCell" runat="server" ColumnSpan="3" Visible="True"> <telerik:RadGrid ID="RadGridTags" runat="server" AllowPaging="True" PageSize="10" OnNeedDataSource="TagDataNeedsDataSource" AllowFilteringByColumn="True"> <groupingsettings casesensitive="false"></groupingsettings> <ClientSettings AllowKeyboardNavigation="true" EnablePostBackOnRowClick="true"> <Selecting AllowRowSelect="true"></Selecting> </ClientSettings> <MasterTableView Width="100%" AutoGenerateColumns="False" DataKeyNames="Tag" HeaderStyle-HorizontalAlign="Center"> <Columns> <%--{"Discipline", "Tag", "Tag Status", "Service Description", "Functional Type", "Physical Tag Type"}--%> <telerik:GridBoundColumn DataField="Discipline" DataType="System.String" HeaderText="Discipline" ReadOnly="True" SortExpression="Discipline" UniqueName="Discipline"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Tag" DataType="System.String" HeaderText="Tag" ReadOnly="True" SortExpression="Tag" UniqueName="Tag" ItemStyle-HorizontalAlign="Center"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="TagStatus" DataType="System.String" HeaderText="Tag Status" ReadOnly="True" SortExpression="Tag Status" UniqueName="TagStatus" ItemStyle-HorizontalAlign="Center"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Service Description" DataType="System.String" HeaderText="Service Description" ReadOnly="True" SortExpression="Service Description" UniqueName="ServiceDescription"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="FunctionalType" DataType="System.String" HeaderText="Functional Type" ReadOnly="True" SortExpression="Functional Type" UniqueName="FunctionalType" ItemStyle-HorizontalAlign="Center"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="PhysicalType" DataType="System.String" HeaderText="Physical Type" ReadOnly="True" SortExpression="Physical Type" UniqueName="PhysicalType"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="Tag Maturity Level" DataType="System.String" HeaderText="Tag Maturity Level" ReadOnly="True" SortExpression="Tag Maturity Level" UniqueName="TagMaturityLevel" ItemStyle-HorizontalAlign="Center"> </telerik:GridBoundColumn> </Columns> </MasterTableView> <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> </telerik:RadGrid> <br/> </asp:TableCell> </asp:TableRow> <asp:TableRow ID="TableRow1" runat="server"> <asp:TableCell ID="RadGridTagDetailCell" runat="server" ColumnSpan="3" Visible="True"> <telerik:RadGrid ID="RadGridTagDetail" runat="server" AllowPaging="True" PageSize="20" AllowMultiRowEdit="True" OnNeedDataSource="TagDetailDataNeedsDataSource" OnItemCreated="RadGridTagDetail_ItemCreated" MasterTableView-DataKeyNames="Tag" AllowFilteringByColumn="True" OnItemEvent="RadGridTagDetail_ItemEvent" AllowAutomaticUpdates="False" OnItemCommand="RadGridTagDetail_ItemCommand" OnPreRender="RadGridTagDetail_PreRender" AllowSorting="True"> <GroupingSettings CaseSensitive="false"></GroupingSettings> <MasterTableView Width="100%" AutoGenerateColumns="False" DataKeyNames="Tag" EditMode="InPlace" HeaderStyle-HorizontalAlign="Center" AllowAutomaticUpdates="False" CommandItemDisplay="Top"> <CommandItemTemplate> <asp:LinkButton runat="server" ID="UpdateAll" Text="Save Changes" CommandName="UpdateAll">Save Changes</asp:LinkButton> </CommandItemTemplate> <Columns> <%--"Attribute", "Value", "Unit Of Measure","Type", "Category", "Review Status"--%> <telerik:GridBoundColumn DataField="Attribute" DataType="System.String" HeaderText="Attribute" ReadOnly="True" SortExpression="Attribute" UniqueName="Attribute"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn DataField="Value" DataType="System.String" HeaderText="Value" SortExpression="Value" UniqueName="Value"> <ItemTemplate> <telerik:RadTextBox runat="server" Text='<%# Eval("Value")%>'></telerik:RadTextBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn HeaderText="Unit Of Measure" SortExpression="Unit Of Measure" UniqueName="UnitOfMeasure"> <ItemTemplate> <telerik:RadComboBox ID="radComboUOM" runat="server"> </telerik:RadComboBox> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Type" DataType="System.String" HeaderText="Type" SortExpression="Type" UniqueName="Type"> <ItemTemplate> <asp:Label ID="lblType" runat="server" Text='<%# Eval("Type")%>'></asp:Label></ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Category" DataType="System.String" HeaderText="Category" SortExpression="Category" UniqueName="Category"> <ItemTemplate> <asp:Label ID="lblCategory" runat="server" Text='<%# Eval("Category")%>'></asp:Label> </ItemTemplate> </telerik:GridTemplateColumn> <telerik:GridTemplateColumn DataField="Review Status" DataType="System.String" HeaderText="Review Status" SortExpression="Review Status" UniqueName="ReviewStatus"> <ItemTemplate> <telerik:RadComboBox ID="radComboReviewStatus" runat="server"> <Items> <telerik:RadComboBoxItem Text="Not Started" Value="0" Selected="true"></telerik:RadComboBoxItem> <telerik:RadComboBoxItem Text="Incomplete" Value="1"></telerik:RadComboBoxItem> <telerik:RadComboBoxItem Text="Requires Revision" Value="2"></telerik:RadComboBoxItem> <telerik:RadComboBoxItem Text="Complete" Value="3"></telerik:RadComboBoxItem> </Items> </telerik:RadComboBox> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </MasterTableView> <ClientSettings AllowKeyboardNavigation="true"> <Selecting AllowRowSelect="true"></Selecting> </ClientSettings> <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle> </telerik:RadGrid> </asp:TableCell> </asp:TableRow> </asp:Table> <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server"> <%--<img alt="Loading..." src="./images/loading.gif" style="border: 0;" />--%> </telerik:RadAjaxLoadingPanel> <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> <Scripts> <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" /> <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" /> <telerik:RadScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" /> </Scripts> </telerik:RadScriptManager> <telerik:RadSkinManager ID="QsfSkinManager" runat="server" Skin="MetroTouch" Visible="True" /> <telerik:RadFormDecorator ID="QsfFromDecorator" runat="server" DecoratedControls="All" EnableRoundedCorners="false" Skin="MetroTouch" Visible="False" /> <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" DefaultLoadingPanelID="RadAjaxLoadingPanel1"> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="RadGridTags"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGridTags" /> </UpdatedControls> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGridTagDetail" /> </UpdatedControls> </telerik:AjaxSetting> <telerik:AjaxSetting AjaxControlID="RadGridTagDetail"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGridTagDetail" /> </UpdatedControls> </telerik:AjaxSetting> <%--<telerik:AjaxSetting AjaxControlID="RadAjaxManager1"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="RadGridTagDetail" LoadingPanelID="RadAjaxLoadingPanel1"> </telerik:AjaxUpdatedControl> </UpdatedControls> </telerik:AjaxSetting>--%> </AjaxSettings> </telerik:RadAjaxManager></asp:Content>
Code Behind:
using System;
using System.Collections;
using System.Data;
using System.Globalization;
using System.Web.UI;
using Telerik.Web.UI;
using eB.Library.Web.UI;
namespace eB.PlugIn.AMEC
{
public partial class AMEC_DCR : ObjectSpecificPage
{
private Utils.Data _mData;
private string _mSPoCode;
private DataTable _dtTagDetailData;
protected void Page_Init(object sender, EventArgs e)
{
_mData = new Utils.Data(eBContext.eBSession);
_mSPoCode = Request.QueryString["pocode"];
RadGridTagDetail.ItemCommand += RadGridTagDetail_ItemCommand;
LoadGui();
}
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < RadGridTagDetail.PageSize; i++)
{
RadGridTagDetail.EditIndexes.Add(i);
}
}
protected void RadGridTagDetail_PreRender(object sender, EventArgs e)
{
if (!IsPostBack)
{
foreach (GridItem item in RadGridTagDetail.MasterTableView.Items)
{
if (item is GridEditableItem)
{
GridEditableItem editableItem = item as GridDataItem;
editableItem.Edit = true;
}
}
RadGridTagDetail.Rebind();
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
if (RadGridTags.SelectedIndexes.Count == 0)
RadGridTags.SelectedIndexes.Add(0);
RadGridTagDetail.Rebind();
}
private void LoadGui()
{
var personNameSplit = eBContext.PersonName.Split(',');
var currentUser = personNameSplit[1].Trim(' ');
lblSupplierValue.Text = string.Format(" {0}", currentUser);
lblPoNameValue.Text = _mSPoCode;
lblProjectNameValue.Text = "Mad Dog 2";
OrgLogo.ImageUrl = _mData.GetOrganizationLogo(Server.MapPath(@"~\PlugIns\AMEC\images"));
//lblProjectNameValue.Text = _mData.GetPoPrimaryPi(_mSPoCode);
}
int _totalItemCount;
protected void RadGridTagDetail_ItemCreated(object sender, GridItemEventArgs e)
{
var gridPagerItem = e.Item as GridPagerItem;
if (gridPagerItem != null)
{
var pagerItem = gridPagerItem;
var pageSizeCombo = (RadComboBox)pagerItem.FindControl("PageSizeComboBox");
var item1 = new RadComboBoxItem("All", _totalItemCount.ToString(CultureInfo.InvariantCulture));
item1.Attributes.Add("ownerTableViewId", gridPagerItem.OwnerTableView.ClientID);
pageSizeCombo.Items.Add(item1);
}
if (e.Item.ItemType != GridItemType.Item && e.Item.ItemType != GridItemType.AlternatingItem) return;
var item = (GridDataItem)e.Item;
item.Edit = true;
var comboBoxUom = (RadComboBox)(item.FindControl("radComboUOM"));
var comboBoxReviewStatus = (RadComboBox) (item.FindControl("radComboReviewStatus"));
comboBoxReviewStatus.SelectedIndex = 0;
if (comboBoxUom == null) return;
var dataRow = item.DataItem as DataRowView;
if (dataRow == null) return;
var attName = dataRow["Attribute"].ToString();
var currentVal = dataRow["Unit Of Measure"].ToString();
var values = _mData.GetUomValueList(item.GetDataKeyValue("Tag").ToString(), attName);
if (values.Count == 0)
return;
comboBoxUom.DataSource = values;
comboBoxUom.SelectedValue = currentVal;
}
protected void RadGridTagDetail_ItemEvent(object sender, GridItemEventArgs e)
{
if (e.EventInfo is GridInitializePagerItem)
{
_totalItemCount = (e.EventInfo as GridInitializePagerItem).PagingManager.DataSourceCount;
}
}
protected void TagDetailDataNeedsDataSource(object sender, GridNeedDataSourceEventArgs e)
{
_dtTagDetailData = (DataTable)ViewState[RadGridTags.SelectedValue.ToString()];
if (_dtTagDetailData == null)
{
_dtTagDetailData = _mData.GetTagDetailsData(RadGridTags.SelectedValue.ToString());
ViewState[RadGridTags.SelectedValue.ToString()] = _dtTagDetailData;
}
RadGridTagDetail.DataSource = _dtTagDetailData;
}
protected void TagDataNeedsDataSource(object sender, GridNeedDataSourceEventArgs e)
{
var dtTagData = (DataTable)ViewState[_mSPoCode];
if (dtTagData == null)
{
dtTagData = _mData.GetPoTagData(_mSPoCode);
ViewState[_mSPoCode] = dtTagData;
}
RadGridTags.DataSource = dtTagData;
RadGridTags.SelectedIndexes.Add(0);
}
protected void RadGridTagDetail_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName != "UpdateAll") return;
if (RadGridTagDetail.EditIndexes.Count == 0)
{
return;
}
foreach (GridDataItem item in RadGridTagDetail.EditItems)
{
UpdateItem(item.EditFormItem);
}
e.Item.OwnerTableView.Rebind();
}
private void UpdateItem(GridEditableItem editedItem)
{
if (editedItem == null)
return;
//Locate the changed row in the DataSource
var changedRows = _dtTagDetailData.Select("Tag = '" + editedItem.GetDataKeyValue("Tag") + "'");
if (changedRows.Length != 1)
{
return;
}
//Update new values
var newValues = new Hashtable();
//The GridTableView will fill the values from all editable columns in the hash
editedItem.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);
var changedRow = changedRows[0];
changedRow.BeginEdit();
try
{
foreach (DictionaryEntry entry in newValues)
{
changedRow[(string)entry.Key] = entry.Value;
}
changedRow.EndEdit();
}
catch (Exception)
{
changedRow.CancelEdit();
}
}
}
}
<%@ Register Assembly="RadEditorSharePoint, Version=6.3.0.0, Culture=neutral, PublicKeyToken=1f131a624888eeed"
Namespace="Telerik.SharePoint" TagPrefix="telerik" %>
in the ascx page
Compiler Error Message: CS0012: The type 'Telerik.Web.UI.RadEditor' is defined in an assembly that is not referenced. You must add a reference to assembly 'Telerik.Web.UI, Version=2012.1.215.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4'.
Source Error:
Line 1154:
Line 1155: [System.Diagnostics.DebuggerNonUserCodeAttribute()]
Line 1156: private global::Telerik.SharePoint.MOSSRadEditor @__BuildControlrtxtDetail() {
Line 1157: global::Telerik.SharePoint.MOSSRadEditor @__ctrl;
Line 1158:
function AllowJPEGExtension() { var upload = $find("<%= RadAsyncUpload1.ClientID %>"); if (!upload.isExtensionValid(".jpeg")) { var exts = upload.get_allowedFileExtensions(); exts[exts.length] = ".jpeg"; }}
protected void myRadGrid1_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item is GridDataItem) { GridDataItem item = (GridDataItem)e.Item; foreach (string hlc in hyperlinksColumns) { HyperLink link = new HyperLink(); Guid guid = new Guid(); link.ID = guid.ToString(); link.Text = item[hlc].Text; //accessing the GridBoundColumn to get the text link.NavigateUrl = item[hlc + "_URL"].Text; item[hlc].Controls.Add(link); } foreach (string ic in imageColumns) { Image image = new Image(); Guid guid = new Guid(); image.ID = guid.ToString(); image.ImageUrl = ImageLocation + item[ic + "_IMG"].Text; item[ic + "_IMG"].Controls.Add(image); } }}