在telerik documentation中,可以说聚合值存储在url.templateArgs.shortname
中。他们甚至在exemple中使用它。
但我觉得无法证明。因为每一个都是真的,直到被证明是错的。对吧?
让我为你提供一个最小的,完整的,可验证的例子。所以你可以指出我的错误。
AggregatesValues
<telerik:RadGrid ID="RadGrid1" runat="server" OnNeedDataSource="RadGrid1_NeedDataSource" AllowPaging="True" ShowGroupPanel="True">
<MasterTableView>
<GroupByExpressions>
<telerik:GridGroupByExpression>
<SelectFields>
<telerik:GridGroupByField FieldAlias="GrpGroupID1" FieldName="GroupID" />
<telerik:GridGroupByField FieldAlias="SumCount" FieldName="Count" Aggregate="Sum" />
</SelectFields>
<GroupByFields>
<telerik:GridGroupByField FieldAlias="GrpGroupID" FieldName="GroupID" HeaderText="" />
</GroupByFields>
</telerik:GridGroupByExpression>
</GroupByExpressions>
<GroupHeaderTemplate>
<table>
<tr>
<td>eval GrpGroupID1:</td>
<td><%# Eval("GrpGroupID1") %></td>
<td> ||| </td>
<td>Bind GrpGroupID1:</td>
<td><%# ((GridGroupHeaderItem)Container).AggregatesValues["GrpGroupID1"] %></td>
</tr>
<tr>
<td>eval SumCount:</td>
<td><%# Eval("SumCount") %></td>
<td> ||| </td>
<td>Bind SumCount:</td>
<td><%# ((GridGroupHeaderItem)Container).AggregatesValues["SumCount"] %></td>
</tr>
</table>
</GroupHeaderTemplate>
<Columns>
<telerik:GridNumericColumn DataField="ID" HeaderText="ID" SortExpression="ID" UniqueName="Name_ID" />
<telerik:GridNumericColumn DataField="GroupID" HeaderText="GroupID" SortExpression="GroupID" UniqueName="Name_GroupID" />
<telerik:GridBoundColumn DataField="Name" HeaderText="Name" SortExpression="Name" UniqueName="Name_Name" />
<telerik:GridBoundColumn DataField="Text" HeaderText="Text" SortExpression="Text" UniqueName="Name_Text" />
<telerik:GridNumericColumn DataField="Count" HeaderText="Count" SortExpression="Count" UniqueName="Name_Count" Aggregate="Sum" />
</Columns>
</MasterTableView>
</telerik:RadGrid>
debug中的AggregatesValues的键和值:
正如你在这个例子中所看到的:
- protected void RadGrid1_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
List<TmpType> myData = new List<TmpType>();
List<string> firstNames = new List<string>() { "Angela", "Pamela", "Sandra", "Rita", "Monica", "Erica", "Tina", "Mary", "Jessica", "Loubega" };
List<string> Location = new List<string>() { "Reunion", "Paris", "Bretagne", "Madagascar", "UK", "Maurice" };
Random random = new Random();
for (int i = 0; i <= 88; i++)
{
TmpType row = new TmpType();
row.ID = i + 1;
row.GroupID = random.Next(10);
row.Count = random.Next(10);
row.Name = firstNames[random.Next(firstNames.Count)];
row.Text = Location[random.Next(Location.Count)];
myData.Add(row);
}
RadGrid1.DataSource = myData;
}
class TmpType
{
public string Name { get; set; }
public string Text { get; set; }
public int Count { get; set; }
public int GroupID { get; set; }
public int ID { get; set; }
}
可以找到值
何时:
- Eval("SumCount")
失败!
文档说:
当您要访问当前组中项目的总聚合时的字段别名。
((GridGroupHeaderItem)Container).AggregatesValues["SumCount"]
是我的FieldAlias。
以下列出了我尝试过的所有事情和结果。
Eval():总是几乎正确,几乎所有内容的近似知识。
SumCount
,提供groupby字段的当前值,好的!Eval("GrpGroupID1")
,提供聚合函数的正确结果,好的!Eval("SumCount")
,为此论坛提供行的值(4),而非预期。Eval("Count")
,错误,因为这不是任何属性,好的!AggregatesValues:会很快!
Eval("Name_Count")
,提供groupby字段的当前值,好的!
((GridGroupHeaderItem)Container).AggregatesValues["GrpGroupID1"]
,返回NULL
这些测试是使用Everything else
而不使用标签进行的。
asp:Label
。但为什么?为什么我在MSDN状态时使用Eval
我不应该使用它,以及Telerik文档说明我可以使用聚合值集合。许多人会问:“问题在哪里?”
如何在没有Eval
或GridGroupHeaderItem.AggregatesValues
的情况下获得此Eval
?
答案 0 :(得分:1)
“ Name_GroupID”缺少%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
def plot_timeseries(*args):
'''Plots all time series taken as arguments '''
length = len(args[0])
months = pd.date_range(start = '2018-01-01', periods = length, freq = 'MS')
columns = dict()
enum = enumerate(args)
for i, series in enum:
# Check arguments and handle errors
if len(series) != length:
raise ValueError('Time series are not of equal length.')
if not isinstance(series, (np.ndarray, np.generic) ):
raise ValueError('Arguments must be numpy arrays. {} is not!'.format(series))
# name columns
columns['ts{}'.format(i+1)] = series
# create dataframe with all series
columns['month'] = months
df = pd.DataFrame(columns).set_index('month')
# plotting
plt.figure(figsize=(10,6))
sns.set(style="dark")
g = sns.lineplot(data=df)
legend.legendHandles[0].set_linewidth(3.0)
plt.legend(bbox_to_anchor=(1.05, 1), frameon=False, loc=2, borderaxespad=0.)
s1 = np.array([1,0,1,0,1,0,1,0,1])
s2 = s1 + 1
plot_timeseries(s1,s2)
属性,该属性实际上将填充“聚合值”集合。虽然Eval()可以访问绑定值,但Aggregate集合仍为空,从而导致空值。
尝试将Aggregate
添加到该列中。
Aggregate="Sum"
结果:
调试中AggregatesValues的键和值:
数据显示示例:
BIG拇指同意您提出的所有详细信息!对此案进行调查真是太好了!