or
public class CallItem |
{ |
private DateTime callDateTime; |
public DateTime CallDateTime |
{ |
get { return callDateTime; } |
set { callDateTime = value; } |
} |
private String calledNumber; |
public String CalledNumber |
{ |
get { return calledNumber; } |
set { calledNumber = value; } |
} |
private String logicCall; |
public String LogicCall |
{ |
get { return logicCall; } |
set { logicCall = value; } |
} |
private Int64 callDuration; |
public Int64 CallDuration |
{ |
get { return callDuration; } |
set { callDuration = value; } |
} |
private Double costWithTaxes; |
public Double CostWithTaxes |
{ |
get { return costWithTaxes; } |
set { costWithTaxes = value; } |
} |
private Double costWithDiscount; |
public Double CostWithDiscount |
{ |
get { return costWithDiscount; } |
set { costWithDiscount = value; } |
} |
private String abonentNumber; |
public String AbonentNumber |
{ |
get { return abonentNumber; } |
set { abonentNumber = value; } |
} |
public CallItem(String abonentNumber, DateTime callDateTime, Int64 callDuration, String calledNumber, Double costWithDiscount, Double costWithTaxes, String logicCall) |
{ |
this.abonentNumber = abonentNumber; |
this.callDateTime = callDateTime; |
this.callDuration = callDuration; |
this.calledNumber = calledNumber; |
this.costWithDiscount = costWithDiscount; |
this.costWithTaxes = costWithTaxes; |
this.logicCall = logicCall; |
} |
} |
List<CallItem> items = GetAllItems(); |
dataGridView.ItemsSource = items; |
dataGridView.CreateFilterDescriptions(); |
And when I (or user) drag and dropping column (for example AbonentNumber) on grouping panel I need to waiting about 35 seconds.
if I heed to waiting about 35 seconds when I need grouping 1500 records then how long I need to waiting if I must grouping about 15000 records or 150000 records?
How i can increase performance of grouping in GridView? Or may be for my task I dont need to use GridView and grouping?
System.Windows.Media.Animation Warning: 6 : Unable to perform action because the specified Storyboard was never applied to this object for interactive control.; Action='Stop'; Storyboard='System.Windows.Media.Animation.Storyboard'; Storyboard.HashCode='14445493'; Storyboard.Type='System.Windows.Media.Animation.Storyboard'; TargetElement='Telerik.Windows.Controls.GridView.GridViewExpandableRow'; TargetElement.HashCode='14788679'; TargetElement.Type='Telerik.Windows.Controls.GridView.GridViewExpandableRow' |
System.Windows.Media.Animation Warning: 6 : Unable to perform action because the specified Storyboard was never applied to this object for interactive control.; Action='Stop'; Storyboard='System.Windows.Media.Animation.Storyboard'; Storyboard.HashCode='14445493'; Storyboard.Type='System.Windows.Media.Animation.Storyboard'; TargetElement='Telerik.Windows.Controls.GridView.GridViewRow'; TargetElement.HashCode='1651401'; TargetElement.Type='Telerik.Windows.Controls.GridView.GridViewRow' |
dataGridView.GroupDescriptions.Clear(); |
Telerik.Windows.Data.RadGroupDescription desc = new Telerik.Windows.Data.RadGroupDescription("LogicCall"); |
Telerik.Windows.Data.SumFunction funcCallDuration = new Telerik.Windows.Data.SumFunction("CallDuration", "CallDuration", "Duration:"); |
desc.AggregateFunctions.Add(funcCallDuration); |
dataGridView.GroupDescriptions.Add(desc); |
public class mF : Telerik.Windows.Data.SumFunction |
{ |
public mF() |
{ |
} |
public mF(string propertyName, string calculationField, string caption) |
{ |
base.Name = propertyName; |
base.SourceField = calculationField; |
base.Caption = caption; |
} |
private String GetTime(Decimal totalSeconds) |
{ |
Int32 hours = (Int32)Math.Floor((double)totalSeconds / (double)3600); |
Int32 minutes = (Int32)Math.Floor((double)(totalSeconds - (hours * 3600)) / (double)60); |
Int32 seconds = (Int32)totalSeconds - (hours * 3600) - (minutes * 60); |
return hours.ToString() + ":" + minutes.ToString() + ":" + seconds.ToString(); |
} |
public override Telerik.Windows.Data.AggregateResult Calculate(Telerik.Windows.Data.GroupRecord targetGroup) |
{ |
Telerik.Windows.Data.AggregateResult result = base.Calculate(targetGroup); |
result.Value = GetTime(Convert.ToDecimal(result.Value, System.Globalization.CultureInfo.CurrentCulture)); |
return result; |
} |
} |