This is a migrated thread and some comments may be shown as answers.

GridNumericColumn.FormatDataValue

3 Answers 343 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Brent
Top achievements
Rank 1
Brent asked on 13 Aug 2009, 01:22 AM
With the following grid
<telerik:RadGrid ID="rgRates" runat="server" AutoGenerateColumns="false" Visible="true"
    <MasterTableView DataKeyNames="RecordID" EditMode="InPlace" CommandItemDisplay="Top"
        <CommandItemSettings AddNewRecordText="" AddNewRecordImageUrl="../../App_Themes/Default/images/Add.gif" RefreshText="Refresh" /> 
        <Columns> 
            <telerik:GridBoundColumn DataField="RecordID" Visible="false" /> 
            <telerik:GridEditCommandColumn ButtonType="LinkButton" CancelText="Cancel" EditText="Edit" UpdateText="Save" /> 
            <telerik:GridDateTimeColumn DataField="DateStart" HeaderText="Start" DataFormatString="{0:d}" ColumnEditorID="rgRatesDateEditor" /> 
            <telerik:GridDateTimeColumn DataField="DateEnd" HeaderText="End" DataFormatString="{0:d}" ColumnEditorID="rgRatesDateEditor" /> 
            <telerik:GridNumericColumn DataField="Commission" HeaderText="Commission" HeaderStyle-HorizontalAlign="Right" DataFormatString="${0:N4}" ItemStyle-HorizontalAlign="Right" ColumnEditorID="rgRatesCommission" /> 
            <telerik:GridNumericColumn DataField="Revenue" HeaderText="Revenue" HeaderStyle-HorizontalAlign="Right" DataFormatString="${0:N4}" ItemStyle-HorizontalAlign="Right" ReadOnly="true" /> 
            <telerik:GridButtonColumn ButtonType="LinkButton" Text="Delete" CommandName="Delete" ConfirmDialogType="Classic" ConfirmTitle="Confirm Delete" ConfirmText="Are you sure you want to delete the specified record?" /> 
        </Columns> 
    </MasterTableView> 
</telerik:RadGrid> 
<telerik:GridDateTimeColumnEditor ID="rgRatesDateEditor" runat="server" TextBoxStyle-Width="90" /> 
<telerik:GridNumericColumnEditor ID="rgRatesCommission" runat="server" NumericTextBox-Width="50" NumericTextBox-Type="Number" NumericTextBox-SelectionOnFocus="None" NumericTextBox-Label="$" NumericTextBox-IncrementSettings-InterceptArrowKeys="false" /> 
 

bound to a list of objects where:
"RecordID" type is Integer
"DateStart" type is Date
"DateEnd" type is Date
"Commission" type is Decimal
"Revenue" type is Nullable Decimal

Clicking the "Add" button to add a new InPlace edit row generates the following error:

"Object reference not set to an instance of an object." in the method "Telerik.Web.UI.GridNumericColumn.FormatDataValue"

Assembly Version: 2009.2.701.35

3 Answers, 1 is accepted

Sort by
0
Brent
Top achievements
Rank 1
answered on 13 Aug 2009, 01:43 AM
For now, my solution is as follows:

Imports Telerik.Web.UI 
 
 
Namespace MyNamespace 
 
    Public Class GridNumericColumn 
        Inherits Telerik.Web.UI.GridNumericColumn 
 
        Protected Overrides Function FormatDataValue(ByVal dataValue As Object, ByVal item As Telerik.Web.UI.GridItem) As String 
 
            If item.IsInEditMode AndAlso Me.ReadOnly Then 
                If dataValue Is Nothing Then 
                    Return String.Empty 
                Else 
                    Return dataValue.ToString() 
                End If 
            End If 
 
            If (Me.NumericType = NumericType.Currency) AndAlso String.IsNullOrEmpty(Me.DataFormatString) Then 
                MyBase.formatting = "{0:c2}" 
            End If 
 
            Return MyBase.FormatDataValue(dataValue, item) 
 
        End Function 
 
    End Class 
 
End Namespace 

Register the namespace of the custom control, and replace the Telerik GridNumericColumn definition with the custom column definition.

<myPrefix:GridNumericColumn DataField="Revenue" HeaderText="Revenue" HeaderStyle-HorizontalAlign="Right" DataFormatString="${0:N4}" ItemStyle-HorizontalAlign="Right" ReadOnly="true" /> 
 

Let us know if there's another solution, or something I should be doing differently.

0
Albert
Top achievements
Rank 1
answered on 05 Apr 2011, 04:12 PM
I'm experiencing a similar issue with version 2009.3.1103.35. Binding grid to a dictionary of objects with nullable numeric fields is fine in readonly mode even if values are null. However, if a field contains a null value and I switch to edit mode via automatic form (EditMode="EditForms"), I get the following exception. Has this been fixed in new releases or should I go with the workaround posted by Brent?

[NullReferenceException: Object reference not set to an instance of an object.]
   Telerik.Web.UI.GridNumericColumn.FormatDataValue(Object dataValue, GridItem item) +69
   Telerik.Web.UI.GridBoundColumn.OnDataBindColumn(Object sender, EventArgs e) +1016
   System.Web.UI.Control.OnDataBinding(EventArgs e) +99
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +92
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   System.Web.UI.Control.DataBindChildren() +211
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +102
   System.Web.UI.Control.DataBind() +15
   Telerik.Web.UI.GridEditFormItem.SetupItem(Boolean dataBind, Object dataItem, GridColumn[] columns, ControlCollection rows) +387
   Telerik.Web.UI.GridItemBuilder.CreateItems(GridGroupingContext group) +976
   Telerik.Web.UI.GridTableView.CreateItems(IEnumerator enumerator, GridColumn[] columns, ControlCollection controls) +187
   Telerik.Web.UI.GridTableView.CreateControlHierarchy(Boolean useDataSource) +1571
   Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource) +801
   System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) +57
   System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) +114
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +31
   System.Web.UI.WebControls.DataBoundControl.PerformSelect() +142
   Telerik.Web.UI.GridTableView.PerformSelect() +28
   System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +73
   Telerik.Web.UI.GridTableView.DataBind() +350
   Telerik.Web.UI.GridTableView.Rebind() +98
   Telerik.Web.UI.GridCommandEventArgs.ExecuteCommand(Object source) +395
   Telerik.Web.UI.RadGrid.OnBubbleEvent(Object source, EventArgs e) +191
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
   Telerik.Web.UI.GridItem.OnBubbleEvent(Object source, EventArgs e) +165
   System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
   System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +118
   System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +135
   System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +175
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
0
Albert
Top achievements
Rank 1
answered on 05 Apr 2011, 04:46 PM
Update: this problem no longer exists in 2010.3.1317.35, so I'm good. BTW, would a fix for a bug like this be usually noted in release notes or issue tracker?
Thanks.

 

Tags
Grid
Asked by
Brent
Top achievements
Rank 1
Answers by
Brent
Top achievements
Rank 1
Albert
Top achievements
Rank 1
Share this question
or