Hello,
I have a problem on the edit form.
My rule is to perform calculations in the edit form with special use.
I have a radcombobox (Billing % or Amount) to select 2 status. The first status (Amount) set the field of the percentage in readonly in the form and editable the field "Amount Value to be invoiced". When I switch to set "Percentage", the field percentage change to be editable and set the field "Amount Value to be invoiced" to ReadOnly.
But I haven't solution to do this action in the edit form.
Can you help me? Do you have a exemple?
When the user input data in the field automatically there is complex calcul in code behind. Actualy I have GridNumericColumn linked to GridNumericColumnEditor with this code :
It's the good solution to manage my GridNumericColumn to do my calcul? I can't use the GridCalculatedColumn because I have a lot of parameters.
Thanks you for your help.
Best Regards
Laurent
I have a problem on the edit form.
My rule is to perform calculations in the edit form with special use.
I have a radcombobox (Billing % or Amount) to select 2 status. The first status (Amount) set the field of the percentage in readonly in the form and editable the field "Amount Value to be invoiced". When I switch to set "Percentage", the field percentage change to be editable and set the field "Amount Value to be invoiced" to ReadOnly.
But I haven't solution to do this action in the edit form.
Can you help me? Do you have a exemple?
When the user input data in the field automatically there is complex calcul in code behind. Actualy I have GridNumericColumn linked to GridNumericColumnEditor with this code :
<
telerik:GridNumericColumnEditor
runat
=
"server"
ID
=
"GridColumnEditor_Percentage"
>
<
NumericTextBox
Culture
=
"en-US"
DisplayText
=
""
LabelCssClass
=
""
LabelWidth
=
"64px"
AutoPostBack
=
"true"
MinValue
=
"0"
OnTextChanged
=
"RadNumericTextBoxGrid_TextChanged"
>
<
NumberFormat
ZeroPattern
=
"n"
DecimalDigits
=
"0"
/>
</
NumericTextBox
>
</
telerik:GridNumericColumnEditor
>
Thanks you for your help.
Best Regards
Laurent
5 Answers, 1 is accepted
0

Princy
Top achievements
Rank 2
answered on 12 Oct 2012, 11:10 AM
Hi,
I suppose you are using dropdowncolumn and boundcolumns. Here is the sample code that I tried to make the columns readonly based on the selected value of the dropdowncolumn.
aspx:
C#:
Thanks,
Princy.
I suppose you are using dropdowncolumn and boundcolumns. Here is the sample code that I tried to make the columns readonly based on the selected value of the dropdowncolumn.
aspx:
<
telerik:RadGrid
ID
=
"RadGrid1"
AutoGenerateEditColumn
=
"true"
DataSourceID
=
"SqlDataSource2"
runat
=
"server"
AutoGenerateColumns
=
"false"
onitemcreated
=
"RadGrid1_ItemCreated"
>
<
MasterTableView
>
<
Columns
>
<
telerik:GridDropDownColumn
UniqueName
=
"drop"
DropDownControlType
=
"RadComboBox"
DataSourceID
=
"SqlDataSource2"
ListTextField
=
"FirstName"
ListValueField
=
"FirstName"
></
telerik:GridDropDownColumn
>
<
telerik:GridBoundColumn
DataField
=
"FirstName"
UniqueName
=
"FirstName"
></
telerik:GridBoundColumn
>
<
telerik:GridBoundColumn
DataField
=
"LastName"
UniqueName
=
"Name"
></
telerik:GridBoundColumn
>
</
Columns
>
</
MasterTableView
>
</
telerik:RadGrid
>
protected
void
RadGrid1_ItemCreated(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem item = (GridEditableItem)e.Item;
RadComboBox combo = (RadComboBox)item[
"drop"
].Controls[0];
combo.AutoPostBack =
true
;
combo.SelectedIndexChanged +=
new
RadComboBoxSelectedIndexChangedEventHandler(combo_SelectedIndexChanged);
}
}
void
combo_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
RadComboBox combo = (RadComboBox)sender;
GridEditableItem item = (GridEditableItem)combo.NamingContainer;
TextBox txt1 = (TextBox)item[
"FirstName"
].Controls[0];
TextBox txt2 = (TextBox)item[
"Name"
].Controls[0];
if
(combo.SelectedItem.Text ==
"Sachin"
)
{
txt1.ReadOnly =
true
;
txt2.ReadOnly =
false
;
}
else
{
txt2.ReadOnly =
true
;
txt1.ReadOnly =
false
;
}
}
Thanks,
Princy.
0

Laurent
Top achievements
Rank 2
answered on 12 Oct 2012, 12:07 PM
Thanks you for your answer.
Actualy I use this solution with a radcombobox.
This is the code but the grid no change when I have selected a other status. It's lite different like your but the idea is the same...no?
RadGrid :
Code Behind :
Regards
Laurent
Actualy I use this solution with a radcombobox.
This is the code but the grid no change when I have selected a other status. It's lite different like your but the idea is the same...no?
RadGrid :
<
telerik:RadGrid
AutoGenerateColumns
=
"False"
ID
=
"gridBillingEvents"
OnNeedDataSource
=
"gridBillingEvents_NeedDataSource"
AllowSorting
=
"True"
PageSize
=
"20"
ShowFooter
=
"True"
AllowPaging
=
"True"
runat
=
"server"
OnItemCreated
=
"gridBillingEvents_ItemCreated"
OnInsertCommand
=
"gridBillingEvents_InsertCommand"
OnDeleteCommand
=
"gridBillingEvents_DeleteCommand"
OnUpdateCommand
=
"gridBillingEvents_UpdateCommand"
OnItemDataBound
=
"gridBillingEvents_ItemDataBound"
GridLines
=
"None"
Width
=
"95%"
Skin
=
"Windows7"
ShowStatusBar
=
"True"
EnableLinqExpressions
=
"False"
CellSpacing
=
"0"
AllowMultiRowEdit
=
"True"
GroupingEnabled
=
"False"
OnItemCommand
=
"gridBillingEvents_ItemCommand"
DataMember
=
"BillingEvent"
OnSelectedIndexChanged
=
"gridBillingEvents_SelectedIndexChanged"
>
<
GroupingSettings
CaseSensitive
=
"false"
/>
<
MasterTableView
Width
=
"100%"
EditMode
=
"InPlace"
ShowFooter
=
"True"
DataMember
=
"BillingEvent"
DataKeyNames
=
"h960_upgradebillingeventid, h960_billingdescription, h960_billingperoramount"
CommandItemDisplay
=
"Top"
>
<
CommandItemSettings
AddNewRecordText
=
"Add New Billing Event"
RefreshText
=
"Refresh"
/>
<
RowIndicatorColumn
Visible
=
"True"
FilterControlAltText
=
"Filter RowIndicator column"
>
</
RowIndicatorColumn
>
<
ExpandCollapseColumn
FilterControlAltText
=
"Filter ExpandColumn column"
Visible
=
"false"
>
</
ExpandCollapseColumn
>
<
Columns
>
<
telerik:GridDateTimeColumn
DataField
=
"h960_billingdate"
HeaderStyle-Width
=
"8%"
HeaderText
=
"Billing Date"
UniqueName
=
"Billingbillingdate"
AllowFiltering
=
"False"
DataFormatString
=
"{0 : dd-MMM-yyyy}"
>
<
HeaderStyle
Width
=
"8%"
/>
</
telerik:GridDateTimeColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Billing % or Amount"
UniqueName
=
"BillingPercentOrAmount"
>
<
EditItemTemplate
>
<
telerik:RadComboBox
ID
=
"cbPercentOrAmount"
Height
=
"8%"
runat
=
"server"
Skin
=
"WebBlue"
DataTextField
=
"Value"
DataValueField
=
"key"
DataSourceID
=
"odsPercentOrAmount"
AutoPostBack
=
"true"
SelectedValue='<%# Bind("h960_billingperoramount")%>' NoWrap="True"
OnSelectedIndexChanged="cbPercentOrAmount_SelectedIndexChanged">
</
telerik:RadComboBox
>
</
EditItemTemplate
>
<
ItemTemplate
>
<%# GetLabelOfBillingOrPercentFromValue(Eval("h960_billingperoramount"))%>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Billing Type"
UniqueName
=
"BillingType"
>
<
EditItemTemplate
>
<
telerik:RadComboBox
ID
=
"cbBillingType"
Height
=
"8%"
runat
=
"server"
Skin
=
"WebBlue"
DataTextField
=
"Value"
DataValueField
=
"Key"
DataSourceID
=
"odsBillingDescription"
SelectedValue='<%# Bind("h960_billingdescription")%>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
<
ItemTemplate
>
<%# GetLabelOfBillingDescriptionFromValue(Eval("h960_billingdescription"))%>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridNumericColumn
DataField
=
"h960_msnquantity"
HeaderStyle-Width
=
"10%"
HeaderText
=
"MSN Quantity"
ShowFilterIcon
=
"true"
UniqueName
=
"Billingmsnquantity"
ColumnEditorID
=
"GridColumnEditor_MsnQuantity"
>
<
HeaderStyle
Width
=
"150px"
/>
</
telerik:GridNumericColumn
>
<
telerik:GridNumericColumn
DataField
=
"h960_percentage"
HeaderStyle-Width
=
"15%"
HeaderText
=
"Percentage of value to be invoiced"
ShowFilterIcon
=
"true"
UniqueName
=
"Billingpercentage"
ColumnEditorID
=
"GridColumnEditor_Percentage"
>
<
HeaderStyle
Width
=
"150px"
/>
</
telerik:GridNumericColumn
>
<
telerik:GridNumericColumn
DataField
=
"h960_amount"
HeaderStyle-Width
=
"15%"
HeaderText
=
"Amount value to be Invoiced"
ShowFilterIcon
=
"true"
UniqueName
=
"Billingamount"
ColumnEditorID
=
"GridColumnEditor_Amount"
>
<
HeaderStyle
Width
=
"15%"
/>
</
telerik:GridNumericColumn
>
<
telerik:GridTemplateColumn
HeaderText
=
"Usage"
>
<
EditItemTemplate
>
<
telerik:RadComboBox
ID
=
"cbUsages"
Width
=
"50px"
Height
=
"15%"
runat
=
"server"
Skin
=
"WebBlue"
DataTextField
=
"h960_name"
DataValueField
=
"IdString"
DataSourceID
=
"odsUsages"
SelectedValue='<%# Bind("h960_upgradeusageid")%>'>
</
telerik:RadComboBox
>
</
EditItemTemplate
>
<
ItemTemplate
>
<%# GetLabelOfUsageFromValue(Eval("h960_upgradeusageid"))%>
</
ItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridNumericColumn
DataField
=
"h960_paymentcustomerview"
HeaderStyle-Width
=
"15%"
HeaderText
=
"Customer view payment amount (take into account DP)"
ShowFilterIcon
=
"true"
UniqueName
=
"BillingDueNetAmount"
ColumnEditorID
=
"GridColumnEditor_DueNetAmount"
>
<
HeaderStyle
Width
=
"150px"
/>
</
telerik:GridNumericColumn
>
<
telerik:GridTemplateColumn
UniqueName
=
"BillingbtnMSN"
HeaderStyle-Width
=
"5%"
>
<
ItemTemplate
>
<
asp:Button
ID
=
"EditMSN"
runat
=
"server"
Text
=
"MSN Selection"
/>
</
ItemTemplate
>
<
HeaderStyle
Width
=
"5%"
/>
</
telerik:GridTemplateColumn
>
<
telerik:GridBoundColumn
DataField
=
"h960_msnallocation"
HeaderStyle-Width
=
"10%"
ReadOnly
=
"true"
HeaderText
=
"MSN Allocation"
ShowFilterIcon
=
"true"
UniqueName
=
"Billingmsnallocation"
>
<
HeaderStyle
Width
=
"150px"
/>
</
telerik:GridBoundColumn
>
<
telerik:GridEditCommandColumn
ButtonType
=
"ImageButton"
UniqueName
=
"EditCommandColumn"
HeaderStyle-Width
=
"8%"
EditText
=
"Edit"
CancelText
=
"Cancel"
UpdateText
=
"Update"
InsertText
=
"Insert"
>
<
HeaderStyle
Width
=
"8%"
/>
<
ItemStyle
CssClass
=
"MyImageButton"
/>
</
telerik:GridEditCommandColumn
>
<
telerik:GridButtonColumn
ConfirmText
=
"Confirm deletion of Billing Event ?"
ConfirmDialogType
=
"RadWindow"
HeaderStyle-Width
=
"25px"
ConfirmTitle
=
"Delete"
ButtonType
=
"ImageButton"
CommandName
=
"Delete"
Text
=
"Delete"
UniqueName
=
"Delete"
>
<
HeaderStyle
Width
=
"25px"
/>
<
ItemStyle
HorizontalAlign
=
"Center"
CssClass
=
"MyImageButton"
/>
</
telerik:GridButtonColumn
>
</
Columns
>
<
EditFormSettings
>
<
EditColumn
FilterControlAltText
=
"Filter EditCommandColumn column"
>
</
EditColumn
>
</
EditFormSettings
>
</
MasterTableView
>
<
ClientSettings
EnablePostBackOnRowClick
=
"true"
>
<
Selecting
AllowRowSelect
=
"True"
EnableDragToSelectRows
=
"False"
/>
</
ClientSettings
>
<
FilterMenu
EnableImageSprites
=
"False"
>
</
FilterMenu
>
</
telerik:RadGrid
>
<
telerik:GridNumericColumnEditor
runat
=
"server"
ID
=
"GridColumnEditor_MsnQuantity"
>
</
telerik:GridNumericColumnEditor
>
<
telerik:GridNumericColumnEditor
runat
=
"server"
ID
=
"GridColumnEditor_Percentage"
>
<
NumericTextBox
Culture
=
"en-US"
DisplayText
=
""
LabelCssClass
=
""
LabelWidth
=
"64px"
AutoPostBack
=
"true"
MinValue
=
"0"
OnTextChanged
=
"RadNumericTextBoxGrid_TextChanged"
>
<
NumberFormat
ZeroPattern
=
"n"
DecimalDigits
=
"0"
/>
</
NumericTextBox
>
</
telerik:GridNumericColumnEditor
>
<
telerik:GridNumericColumnEditor
runat
=
"server"
ID
=
"GridColumnEditor_Amount"
>
<
NumericTextBox
Culture
=
"en-US"
DisplayText
=
""
LabelCssClass
=
""
LabelWidth
=
"64px"
AutoPostBack
=
"true"
MinValue
=
"0"
OnTextChanged
=
"RadNumericTextBoxGrid_TextChanged"
>
<
NumberFormat
ZeroPattern
=
"n"
DecimalDigits
=
"0"
/>
</
NumericTextBox
>
</
telerik:GridNumericColumnEditor
>
<
telerik:GridNumericColumnEditor
runat
=
"server"
ID
=
"GridColumnEditor_DueNetAmount"
>
<
NumericTextBox
Culture
=
"en-US"
DisplayText
=
""
LabelCssClass
=
""
LabelWidth
=
"64px"
AutoPostBack
=
"true"
MinValue
=
"0"
OnTextChanged
=
"RadNumericTextBoxGrid_TextChanged"
>
<
NumberFormat
ZeroPattern
=
"n"
DecimalDigits
=
"0"
/>
</
NumericTextBox
>
</
telerik:GridNumericColumnEditor
>
Code Behind :
protected
void
gridBillingEvents_ItemDataBound(
object
sender, GridItemEventArgs e)
{
try
{
if
(e.Item
is
GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
Button btnMSN = (Button)item[
"BillingbtnMSN"
].Controls[1];
if
(!e.Item.IsInEditMode)
{
int
BillingType = Convert.ToInt16(item.GetDataKeyValue(
"h960_billingdescription"
));
if
(BillingType == 1)
btnMSN.Visible =
false
;
}
}
if
(e.Item.IsInEditMode)
{
GridEditableItem oeditModeRow = (GridEditableItem)e.Item;
GridEditManager oeditManager = oeditModeRow.EditManager;
GridNumericColumnEditor GridNumericMSNQuantity = (GridNumericColumnEditor)oeditManager.GetColumnEditor(
"Billingmsnquantity"
);
GridNumericColumnEditor GridNumericAmount = (GridNumericColumnEditor)oeditManager.GetColumnEditor(
"Billingamount"
);
GridNumericColumnEditor GridNumericPerc = (GridNumericColumnEditor)oeditManager.GetColumnEditor(
"Billingpercentage"
);
GridNumericColumnEditor GridNumericDueNetAmount = (GridNumericColumnEditor)oeditManager.GetColumnEditor(
"BillingDueNetAmount"
);
//Hide button MSN Allocation
Button btnMSN = (Button)oeditModeRow[
"BillingbtnMSN"
].Controls[1];
btnMSN.Visible =
false
;
}
}
catch
(Exception ex)
{
throw
ex;
}
}
protected
void
RadNumericTextBoxGrid_TextChanged(
object
sender, EventArgs e)
{
//Complex Calcul
}
protected
void
cbPercentOrAmount_SelectedIndexChanged(
object
sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
RadComboBox combo = (RadComboBox)sender;
GridEditableItem item = (GridEditableItem)combo.NamingContainer;
RadNumericTextBox colPerc = (RadNumericTextBox)item[
"Billingpercentage"
].Controls[0];
RadNumericTextBox colAmount = (RadNumericTextBox)item[
"Billingamount"
].Controls[0];
if
(e.Value ==
"2"
)
{
if
(colPerc !=
null
)
colPerc.ReadOnly =
false
;
if
(colAmount !=
null
)
colAmount.ReadOnly =
true
;
}
else
{
if
(colPerc !=
null
)
colPerc.ReadOnly =
true
;
if
(colAmount !=
null
)
colAmount.ReadOnly =
false
;
}
}
Regards
Laurent
0

Laurent
Top achievements
Rank 2
answered on 12 Oct 2012, 03:52 PM
As for me, I misspoke ...
The functionality to switch on the radcombobox works....but it visually displays the field as an input field and I would like to have as a readonly field like on the picture...
Thanks you
Regards
Laurent
The functionality to switch on the radcombobox works....but it visually displays the field as an input field and I would like to have as a readonly field like on the picture...
Thanks you
Regards
Laurent
0
Accepted

Princy
Top achievements
Rank 2
answered on 16 Oct 2012, 06:48 AM
Hi,
Try modifying the if condition as follows.
C#:
Hope this helps.
Regards,
Princy.
Try modifying the if condition as follows.
C#:
if
(combo.SelectedItem.Text ==
"2"
)
{
txt1.Visible =
false
;
item[
"Billingpercentage"
].Controls.Add(lbl);
lbl.Text = txt1.Text;
lbl.ID =
"lbl1"
;
txt2.ReadOnly =
false
;
}
else
{
txt2.Visible =
false
;
item[
"Billingamount"
].Controls.Add(lbl1);
lbl1.Text = txt2.Text;
lbl1.ID =
"lbl2"
;
}
Hope this helps.
Regards,
Princy.
0

Laurent
Top achievements
Rank 2
answered on 09 Nov 2012, 03:12 PM
Thanks Princy