C# 在Devexpress Gridview中计算小计
我有一个简单的C# 在Devexpress Gridview中计算小计,c#,asp.net,gridview,devexpress,aspxgridview,C#,Asp.net,Gridview,Devexpress,Aspxgridview,我有一个简单的DevexpressGridview 这里是代码 <dx:ASPxGridView ID="grid" runat="server" DataSourceID="MasterDataSource" Width="100%" AutoGenerateColumns="False" KeyFieldName="CategoryID"> <Columns> <dx:GridViewDataTextCo
Devexpress
Gridview
这里是代码
<dx:ASPxGridView ID="grid" runat="server" DataSourceID="MasterDataSource" Width="100%"
AutoGenerateColumns="False" KeyFieldName="CategoryID">
<Columns>
<dx:GridViewDataTextColumn FieldName="CategoryID" ReadOnly="True" VisibleIndex="0" />
<dx:GridViewDataTextColumn FieldName="CategoryName" VisibleIndex="1" />
<dx:GridViewDataTextColumn FieldName="Description" VisibleIndex="2" />
</Columns>
<SettingsDetail ShowDetailRow="True" ExportMode="Expanded" />
<Templates>
<DetailRow>
<dx:ASPxGridView ID="detailGrid" runat="server" AutoGenerateColumns="False" DataSourceID="DetailDataSource"
KeyFieldName="ProductID" Width="100%" OnBeforePerformDataSelect="detailGrid_BeforePerformDataSelect">
<SettingsDetail IsDetailGrid="true" ExportIndex="0" />
<Columns>
<dx:GridViewDataTextColumn FieldName="ProductID" ReadOnly="True" VisibleIndex="0" />
<dx:GridViewDataTextColumn FieldName="ProductName" VisibleIndex="1" />
<dx:GridViewDataTextColumn FieldName="UnitPrice" VisibleIndex="2" />
<dx:GridViewDataTextColumn FieldName="QuantityPerUnit" VisibleIndex="3" />
</Columns>
</dx:ASPxGridView>
是否有任何方法可以计算Devexpress中单价
列的小计
例如,;我只想把单价
列的总数(18+19+4.5+14+18+263.5+18+46+14+14+15=430
)放在底部
我该怎么做
致以最诚挚的问候,
Soner我不了解devexpress,但在常规gridview中,您可以轻松计算总数并将其显示在页脚上
double GrdTotal = 0;
protected void grdList_RowDataBound(object sender, GridViewRowEventArgs e)
{
double price = Convert.ToDouble(DataBinder.Eval(e.Row.DataItem, "UnitPrice"));
GrdTotal += price;
if (e.Row.RowType == DataControlRowType.Footer)
{
Label lblTotalPrice = (Label)e.Row.FindControl("UnitPrice");
lblTotalPrice.Text = GrdTotal.ToString();
}
}
这可以通过以下方法使用ASPxGridView实现: 1) 使用单独的方法计算汇总。 2) 使用detail GridView的DataBound和BeforeGetCallBackResult事件处理程序设置标签的文本。这是我的密码:
protected int CalcPageSummary(ASPxGridView gridView, string fieldName) {
GridViewDataColumn column = gridView.Columns[fieldName] as GridViewDataColumn;
if(column == null)
return 0;
int pageIndex = gridView.PageIndex;
int startRowIndex = pageIndex * gridView.SettingsPager.PageSize;
int finishRowIndex = startRowIndex + gridView.SettingsPager.PageSize;
if(finishRowIndex > gridView.VisibleRowCount)
finishRowIndex = gridView.VisibleRowCount;
int result = 0;
for(int i = startRowIndex; i < finishRowIndex; i++)
result += Convert.ToInt32(gridView.GetRowValues(i, fieldName));
return result;
}
private void SetColumnSummary(ASPxGridView gridView, string fieldName) {
ASPxLabel lbl = gridView.FindFooterCellTemplateControl(gridView.Columns[fieldName], "ASPxLabel1") as ASPxLabel;
if(lbl != null)
lbl.Text = CalcPageSummary(gridView, fieldName).ToString();
}
protected void ASPxGridView2_BeforeGetCallbackResult(object sender, EventArgs e) {
SetColumnSummary((ASPxGridView)sender, "UnitPrice");
}
protected void ASPxGridView2_BeforePerformDataSelect(object sender, EventArgs e) {
Session["CategoryID"] = (sender as ASPxGridView).GetMasterRowKeyValue();
}
protected void ASPxGridView2_DataBound(object sender, EventArgs e) {
SetColumnSummary((ASPxGridView)sender, "UnitPrice");
}
protected int-CalcPageSummary(ASPxGridView-gridView,string-fieldName){
GridViewDataColumn=gridView.Columns[fieldName]作为GridViewDataColumn;
if(列==null)
返回0;
int pageIndex=gridView.pageIndex;
int startRowIndex=pageIndex*gridView.SettingsPager.PageSize;
int finishRowIndex=startRowIndex+gridView.SettingsPager.PageSize;
如果(finishRowIndex>gridView.VisibleRowCount)
finishRowIndex=gridView.VisibleRowCount;
int结果=0;
对于(int i=startRowIndex;i
@Özgür谢谢,但我想知道如何在ASPxGridview中做到这一点。。应与普通Gridview不同。