I want to know how to :
1- move template part to make value column under the net effect column in parent row.
2- get template summary value ...I couldn't read it.
3- recalculate net effects column, so the net value column on same time of template summary calculated.
thank you very much
best regards
1- move template part to make value column under the net effect column in parent row.
2- get template summary value ...I couldn't read it.
3- recalculate net effects column, so the net value column on same time of template summary calculated.
best regards
4 Answers, 1 is accepted
0
Hello Mohammad,
Thank you for contacting us.
The implementation in this case very much depends on what is your data source. If your data source is a business object every object can have a property which calculates the net value of its children. By implementing the INotifyPropertChanged your main object can listen for property changes and recalculate that property.
If this is not suitable for you, I would recommend you send me a sample project which will help me provide you with more adequate support.
Let me know If I can be of further assistance.
Regards,
George
Telerik
Thank you for contacting us.
The implementation in this case very much depends on what is your data source. If your data source is a business object every object can have a property which calculates the net value of its children. By implementing the INotifyPropertChanged your main object can listen for property changes and recalculate that property.
If this is not suitable for you, I would recommend you send me a sample project which will help me provide you with more adequate support.
Let me know If I can be of further assistance.
Regards,
George
Telerik
TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WINFORMS.
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>
0
Mohammad
Top achievements
Rank 1
answered on 17 Oct 2013, 07:35 AM
Hello George
Thank you for your response.
there is any way to upload my project ?
thanks
regards
Thank you for your response.
there is any way to upload my project ?
thanks
regards
0
Mohammad
Top achievements
Rank 1
answered on 19 Oct 2013, 03:05 PM
Hello George
I Can't upload my project , so let's try another thing
Project steps :
1- Make new windows form project using visual studio 2012.
2- put new Radgridview on form and change the name to : GVTransactions.
3- Add this code instead of form designer code starting with private sub InitializeComponent:
4- add this code to your form to make grid works:
5- simply Do as next steps to get my point
1-click on Add item button.
2-click on cell button to add new effect.
3-enter any number to effect percent cell and then press enter.
simply in this event or (any thing you suggest) i want to see summary of effects value column in net effects in parent row , and recalculate all summaries in grid.
thank you very much
best regards
I Can't upload my project , so let's try another thing
Project steps :
1- Make new windows form project using visual studio 2012.
2- put new Radgridview on form and change the name to : GVTransactions.
3- Add this code instead of form designer code starting with private sub InitializeComponent:
Private
Sub
InitializeComponent()<br>
Dim
GridViewTextBoxColumn1
As
Telerik.WinControls.UI.GridViewTextBoxColumn =
New
Telerik.WinControls.UI.GridViewTextBoxColumn()<br>
Dim
GridViewTextBoxColumn2
As
Telerik.WinControls.UI.GridViewTextBoxColumn =
New
Telerik.WinControls.UI.GridViewTextBoxColumn()<br>
Dim
GridViewDecimalColumn1
As
Telerik.WinControls.UI.GridViewDecimalColumn =
New
Telerik.WinControls.UI.GridViewDecimalColumn()<br>
Dim
GridViewDecimalColumn2
As
Telerik.WinControls.UI.GridViewDecimalColumn =
New
Telerik.WinControls.UI.GridViewDecimalColumn()<br>
Dim
GridViewTextBoxColumn3
As
Telerik.WinControls.UI.GridViewTextBoxColumn =
New
Telerik.WinControls.UI.GridViewTextBoxColumn()<br>
Dim
GridViewTextBoxColumn4
As
Telerik.WinControls.UI.GridViewTextBoxColumn =
New
Telerik.WinControls.UI.GridViewTextBoxColumn()<br>
Dim
GridViewTextBoxColumn5
As
Telerik.WinControls.UI.GridViewTextBoxColumn =
New
Telerik.WinControls.UI.GridViewTextBoxColumn()<br>
Dim
GridViewTextBoxColumn6
As
Telerik.WinControls.UI.GridViewTextBoxColumn =
New
Telerik.WinControls.UI.GridViewTextBoxColumn()<br>
Dim
GridViewCommandColumn1
As
Telerik.WinControls.UI.GridViewCommandColumn =
New
Telerik.WinControls.UI.GridViewCommandColumn()<br>
Me
.GVTransactions =
New
Telerik.WinControls.UI.RadGridView()<br>
Me
.TableLayoutPanel1 =
New
System.Windows.Forms.TableLayoutPanel()<br>
Me
.Panel1 =
New
System.Windows.Forms.Panel()<br>
Me
.Button1 =
New
System.Windows.Forms.Button()<br>
CType
(
Me
.GVTransactions, System.ComponentModel.ISupportInitialize).BeginInit()<br>
CType
(
Me
.GVTransactions.MasterTemplate, System.ComponentModel.ISupportInitialize).BeginInit()<br>
Me
.TableLayoutPanel1.SuspendLayout()<br>
Me
.Panel1.SuspendLayout()<br>
Me
.SuspendLayout()<br>
'<br>
'GVTransactions<br>
'<br>
Me
.GVTransactions.Dock = System.Windows.Forms.DockStyle.Fill<br>
Me
.GVTransactions.Location =
New
System.Drawing.Point(3, 3)<br>
'<br>
'GVTransactions<br>
'<br>
Me
.GVTransactions.MasterTemplate.AllowAddNewRow =
False
<br>
Me
.GVTransactions.MasterTemplate.AutoSizeColumnsMode = Telerik.WinControls.UI.GridViewAutoSizeColumnsMode.Fill<br>
GridViewTextBoxColumn1.HeaderText =
"Item_code"
<br>
GridViewTextBoxColumn1.Name =
"Item_code"
<br>
GridViewTextBoxColumn1.
ReadOnly
=
True
<br>
GridViewTextBoxColumn1.Width = 85<br>
GridViewTextBoxColumn2.HeaderText =
"Item name"
<br>
GridViewTextBoxColumn2.Name =
"Item_name"
<br>
GridViewTextBoxColumn2.
ReadOnly
=
True
<br>
GridViewTextBoxColumn2.Width = 88<br>
GridViewDecimalColumn1.HeaderText =
"Item Quantity"
<br>
GridViewDecimalColumn1.Minimum =
New
Decimal
(
New
Integer
() {0, 0, 0, 0})<br>
GridViewDecimalColumn1.Name =
"Item_qty"
<br>
GridViewDecimalColumn1.Width = 109<br>
GridViewDecimalColumn2.HeaderText =
"Item price"
<br>
GridViewDecimalColumn2.Minimum =
New
Decimal
(
New
Integer
() {0, 0, 0, 0})<br>
GridViewDecimalColumn2.Name =
"Item_Price"
<br>
GridViewDecimalColumn2.Width = 82<br>
GridViewTextBoxColumn3.HeaderText =
"Total"
<br>
GridViewTextBoxColumn3.Name =
"Total"
<br>
GridViewTextBoxColumn3.
ReadOnly
=
True
<br>
GridViewTextBoxColumn3.Width = 47<br>
GridViewTextBoxColumn4.HeaderText =
"Effects Net"
<br>
GridViewTextBoxColumn4.Name =
"Effects_net"
<br>
GridViewTextBoxColumn4.
ReadOnly
=
True
<br>
GridViewTextBoxColumn4.Width = 88<br>
GridViewTextBoxColumn5.HeaderText =
"Net After Effects"
<br>
GridViewTextBoxColumn5.Name =
"Net_After_Effects"
<br>
GridViewTextBoxColumn5.
ReadOnly
=
True
<br>
GridViewTextBoxColumn5.Width = 127<br>
GridViewTextBoxColumn6.HeaderText =
"Transaction_id"
<br>
GridViewTextBoxColumn6.IsVisible =
False
<br>
GridViewTextBoxColumn6.Name =
"Transaction_id"
<br>
GridViewTextBoxColumn6.Width = 46<br>
GridViewCommandColumn1.HeaderText =
"Add Effect"
<br>
GridViewCommandColumn1.Name =
"AddEffect"
<br>
GridViewCommandColumn1.Width = 171<br>
Me
.GVTransactions.MasterTemplate.Columns.AddRange(
New
Telerik.WinControls.UI.GridViewDataColumn() {GridViewTextBoxColumn1, GridViewTextBoxColumn2, GridViewDecimalColumn1, GridViewDecimalColumn2, GridViewTextBoxColumn3, GridViewTextBoxColumn4, GridViewTextBoxColumn5, GridViewTextBoxColumn6, GridViewCommandColumn1})<br>
Me
.GVTransactions.MasterTemplate.EnableGrouping =
False
<br>
Me
.GVTransactions.Name =
"GVTransactions"
<br>
Me
.GVTransactions.Size =
New
System.Drawing.Size(811, 498)<br>
Me
.GVTransactions.TabIndex = 0<br>
Me
.GVTransactions.Text =
"RadGridView1"
<br>
'<br>
'TableLayoutPanel1<br>
'<br>
Me
.TableLayoutPanel1.ColumnCount = 1<br>
Me
.TableLayoutPanel1.ColumnStyles.Add(
New
System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100.0!))<br>
Me
.TableLayoutPanel1.Controls.Add(
Me
.GVTransactions, 0, 0)<br>
Me
.TableLayoutPanel1.Controls.Add(
Me
.Panel1, 0, 1)<br>
Me
.TableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill<br>
Me
.TableLayoutPanel1.Location =
New
System.Drawing.Point(0, 0)<br>
Me
.TableLayoutPanel1.Name =
"TableLayoutPanel1"
<br>
Me
.TableLayoutPanel1.RowCount = 2<br>
Me
.TableLayoutPanel1.RowStyles.Add(
New
System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 90.0!))<br>
Me
.TableLayoutPanel1.RowStyles.Add(
New
System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10.0!))<br>
Me
.TableLayoutPanel1.Size =
New
System.Drawing.Size(817, 561)<br>
Me
.TableLayoutPanel1.TabIndex = 1<br>
'<br>
'Panel1<br>
'<br>
Me
.Panel1.Controls.Add(
Me
.Button1)<br>
Me
.Panel1.Dock = System.Windows.Forms.DockStyle.Fill<br>
Me
.Panel1.Location =
New
System.Drawing.Point(3, 507)<br>
Me
.Panel1.Name =
"Panel1"
<br>
Me
.Panel1.Size =
New
System.Drawing.Size(811, 51)<br>
Me
.Panel1.TabIndex = 1<br>
'<br>
'Button1<br>
'<br>
Me
.Button1.Location =
New
System.Drawing.Point(9, 3)<br>
Me
.Button1.Name =
"Button1"
<br>
Me
.Button1.Size =
New
System.Drawing.Size(114, 23)<br>
Me
.Button1.TabIndex = 0<br>
Me
.Button1.Text =
"Add Item"
<br>
Me
.Button1.UseVisualStyleBackColor =
True
<br>
'<br>
'Form1<br>
'<br>
Me
.AutoScaleDimensions =
New
System.Drawing.SizeF(6.0!, 13.0!)<br>
Me
.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font<br>
Me
.ClientSize =
New
System.Drawing.Size(817, 561)<br>
Me
.Controls.Add(
Me
.TableLayoutPanel1)<br>
Me
.Name =
"Form1"
<br>
Me
.Text =
"Form1"
<br>
CType
(
Me
.GVTransactions.MasterTemplate, System.ComponentModel.ISupportInitialize).EndInit()<br>
CType
(
Me
.GVTransactions, System.ComponentModel.ISupportInitialize).EndInit()<br>
Me
.TableLayoutPanel1.ResumeLayout(
False
)<br>
Me
.Panel1.ResumeLayout(
False
)<br>
Me
.ResumeLayout(
False
)<br>
<br>
End
Sub
<br>
Friend
WithEvents
GVTransactions
As
Telerik.WinControls.UI.RadGridView<br>
Friend
WithEvents
TableLayoutPanel1
As
System.Windows.Forms.TableLayoutPanel<br>
Friend
WithEvents
Panel1
As
System.Windows.Forms.Panel<br>
Friend
WithEvents
Button1
As
System.Windows.Forms.Button <br>
4- add this code to your form to make grid works:
<br>
Imports
Telerik.WinControls.UI<br>
<br>
Public
Class
Form1<br>
Dim
WithEvents
TmpEff
As
GridViewTemplate<br>
'----------------------------------------------------------------------<br>
Dim
WithEvents
EffLstCol
As
GridViewTextBoxColumn<br>
Dim
Effrelation
As
GridViewRelation<br>
Dim
EffTemplloaded
As
Boolean
=
False
<br>
Dim
WithEvents
colEffInPer
As
GridViewDecimalColumn<br>
Dim
EffValue
As
GridViewDecimalColumn<br>
Dim
SmmInfo
As
GridViewSummaryRowInfo<br>
Private
EffSummary
As
Object
<br>
Private
Sub
Form1_Load(sender
As
Object
, e
As
EventArgs)
Handles
MyBase
.Load<br>
<br>
End
Sub
<br>
Sub
AddTransactionRow()<br>
<br>
'actually rows aadded using datatable , any way user can edit both Item_qty & Item_Price<br>
GVTransactions.RowCount = GVTransactions.RowCount + 1<br>
GVTransactions.Rows(GVTransactions.RowCount - 1).Cells(
"Transaction_id"
).Value = GVTransactions.RowCount<br>
GVTransactions.Rows(GVTransactions.RowCount - 1).Cells(
"Item_code"
).Value = 11511 & GVTransactions.RowCount<br>
GVTransactions.Rows(GVTransactions.RowCount - 1).Cells(
"Item_name"
).Value =
"product"
& GVTransactions.RowCount<br>
<br>
GVTransactions.Rows(GVTransactions.RowCount - 1).Cells(
"Item_qty"
).Value = 500<br>
GVTransactions.Rows(GVTransactions.RowCount - 1).Cells(
"Item_Price"
).Value = 10<br>
GVTransactions.Rows(GVTransactions.RowCount - 1).Cells(
"total"
).Value = GVTransactions.Rows(GVTransactions.RowCount - 1).Cells(
"Item_qty"
).Value _<br>
* GVTransactions.Rows(GVTransactions.RowCount - 1).Cells(
"Item_Price"
).Value<br>
<br>
End
Sub
<br>
<br>
Private
Sub
Button1_Click(sender
As
Object
, e
As
EventArgs)
Handles
Button1.Click<br>
AddTransactionRow()<br>
SummaryRows()<br>
<br>
End
Sub
<br>
Sub
SummaryRows()<br>
<br>
Dim
summaryRowItem
As
New
GridViewSummaryRowItem()<br>
<br>
Dim
summaryItemTotal
As
New
GridViewSummaryItem()<br>
summaryItemTotal.Name =
"Total"
<br>
summaryItemTotal.Aggregate = GridAggregateFunction.Sum<br>
summaryRowItem.Add(summaryItemTotal)<br>
<br>
<br>
Dim
summaryItemeffectsTotal
As
New
GridViewSummaryItem()<br>
summaryItemeffectsTotal.Name =
"Effects_net"
<br>
summaryItemeffectsTotal.Aggregate = GridAggregateFunction.Sum<br>
summaryRowItem.Add(summaryItemeffectsTotal)<br>
<br>
Dim
summaryItemnet
As
New
GridViewSummaryItem()<br>
summaryItemnet.Name =
"Net_After_Effects"
<br>
summaryItemnet.Aggregate = GridAggregateFunction.Sum<br>
summaryRowItem.Add(summaryItemnet)<br>
GVTransactions.SummaryRowsBottom.Clear()<br>
<br>
GVTransactions.SummaryRowsBottom.Add(summaryRowItem)<br>
<br>
GVTransactions.SummaryRowsBottom(0)(0).FormatString =
"{0:f2}"
<br>
GVTransactions.SummaryRowsBottom(0)(1).FormatString =
"{0:f2}"
<br>
GVTransactions.SummaryRowsBottom(0)(2).FormatString =
"{0:f2}"
<br>
<br>
<br>
End
Sub
<br>
<br>
Private
Sub
GVTransactions_Click(sender
As
Object
, e
As
EventArgs)
Handles
GVTransactions.Click<br>
<br>
End
Sub
<br>
<br>
Private
Sub
GVTransactions_CommandCellClick(sender
As
Object
, e
As
EventArgs)
Handles
GVTransactions.CommandCellClick<br>
<br>
If
EffTemplloaded =
False
Then
<br>
colEffInPer =
New
GridViewDecimalColumn<br>
EffValue =
New
GridViewDecimalColumn<br>
EffLstCol =
New
GridViewTextBoxColumn<br>
<br>
TmpEff =
New
GridViewTemplate<br>
<br>
<br>
EffLstCol.Name =
"Eff_name"
<br>
<br>
<br>
EffLstCol.Width = 400<br>
EffLstCol.HeaderText =
"Effect Name"
<br>
colEffInPer.HeaderText =
"Effect Percent"
<br>
EffValue.HeaderText =
"Value"
<br>
<br>
TmpEff.Columns.Add(EffLstCol)<br>
TmpEff.Columns.Add(
"Transaction_id"
)<br>
colEffInPer.Name =
"eff_Percent"
<br>
EffValue.Name =
"ColEffValue"
<br>
EffValue.FormatString =
"{0:f2}"
<br>
<br>
EffValue.
ReadOnly
=
True
<br>
TmpEff.Columns.Add(colEffInPer)<br>
<br>
TmpEff.Columns.Add(EffValue)<br>
<br>
<br>
TmpEff.Columns(
"Transaction_id"
).IsVisible =
False
<br>
<br>
TmpEff.AllowAddNewRow =
False
<br>
GVTransactions.MasterTemplate.Templates.Add(TmpEff)<br>
<br>
Effrelation =
New
GridViewRelation(GVTransactions.MasterTemplate)<br>
Effrelation.ChildTemplate = TmpEff<br>
Effrelation.RelationName =
"r1"
<br>
Effrelation.ParentColumnNames.Add(
"Transaction_id"
)<br>
Effrelation.ChildColumnNames.Add(
"Transaction_id"
)<br>
GVTransactions.Relations.Add(Effrelation)<br>
EffTemplloaded =
True
<br>
<br>
Dim
summaryItem
As
New
GridViewSummaryItem()<br>
<br>
summaryItem.Name =
"ColEffValue"
<br>
summaryItem.Aggregate = GridAggregateFunction.Sum<br>
<br>
Dim
summaryRowItem
As
New
GridViewSummaryRowItem()<br>
summaryRowItem.Add(summaryItem)<br>
<br>
TmpEff.SummaryRowsBottom.Add(summaryRowItem)<br>
<br>
<br>
End
If
<br>
<br>
Dim
EffRow
As
GridViewDataRowInfo<br>
<br>
EffRow = GVTransactions.MasterTemplate.Templates(0).Rows.AddNew<br>
EffRow.Cells(
"Transaction_id"
).Value = GVTransactions.SelectedRows(0).Cells(
"Transaction_id"
).Value<br>
<br>
<br>
GVTransactions.MasterTemplate.ExpandAll()<br>
<br>
<br>
End
Sub
<br>
Private
Sub
GVTransactions_CellValueChanged(sender
As
Object
, e
As
GridViewCellEventArgs)
Handles
GVTransactions.CellValueChanged<br>
<br>
If
e.Column.Name =
"eff_Percent"
Then
<br>
<br>
<br>
TmpEff.Rows(e.RowIndex).Cells(
"ColEffValue"
).Value = e.Row.ViewInfo.ParentRow.Cells(
"total"
).Value * (TmpEff.Rows(e.RowIndex).Cells(
"eff_Percent"
).Value / 100)<br>
<br>
e.Row.ViewInfo.ParentRow.Cells(
"Effects_net"
).Value = e.Row.ViewInfo.ParentRow.Cells(
"Effects_net"
).Value + TmpEff.Rows(e.RowIndex).Cells(
"ColEffValue"
).Value<br>
e.Row.ViewInfo.ParentRow.Cells(
"Net_After_Effects"
).Value = e.Row.ViewInfo.ParentRow.Cells(
"total"
).Value - e.Row.ViewInfo.ParentRow.Cells(
"Effects_Net"
).Value<br>
End
If
<br>
<br>
GVTransactions.EndEdit()<br>
End
Sub
<br>
End
Class
1-click on Add item button.
2-click on cell button to add new effect.
3-enter any number to effect percent cell and then press enter.
simply in this event or (any thing you suggest) i want to see summary of effects value column in net effects in parent row , and recalculate all summaries in grid.
thank you very much
best regards
0
Hello Mohammad,
Thank you for writing back.
In this case it is enough to subscribe to the CellValueChanged event of the grid and change the value of the corresponding cell. It will update the summary data:
I also suggest you to take a look at our articles about managing hierarchical data in RadGridView - http://www.telerik.com/help/winforms/gridview-hierarchical-grid-binding-to-hierarchical-data.html
I hope this helps.
Regards,
George
Telerik
Thank you for writing back.
In this case it is enough to subscribe to the CellValueChanged event of the grid and change the value of the corresponding cell. It will update the summary data:
Private
Sub
GVTransactions_CellValueChanged(sender
As
Object
, e
As
GridViewCellEventArgs)
If
e.Column.Name =
"eff_Percent"
Then
Me
.GVTransactions.Rows(0).Cells(
"Effects_net"
).Value = e.Value.ToString()
End
If
End
Sub
I also suggest you to take a look at our articles about managing hierarchical data in RadGridView - http://www.telerik.com/help/winforms/gridview-hierarchical-grid-binding-to-hierarchical-data.html
I hope this helps.
Regards,
George
Telerik
TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WINFORMS.
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>
Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
Sign up for Free application insights >>