FineUI/FineUI_v6/FineUI.Examples/grid/grid_summary_absolute.aspx
三生石上 62ef818ff0 v6.0.3
2017-09-05 11:30:31 +08:00

122 lines
5.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="grid_summary_absolute.aspx.cs"
Inherits="FineUI.Examples.grid.grid_summary_absolute" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title></title>
<link href="../css/main.css" rel="stylesheet" type="text/css" />
<style>
.mygrid-row-summary .x-grid-td, .mygrid-row-summary.x-grid-row-focused .x-grid-td {
background-color: #fafafa;
font-weight: bold;
color: red;
}
.mygrid-row-summary .x-grid-cell-row-checker .x-grid-cell-inner, .mygrid-row-summary .x-grid-cell-row-numberer .x-grid-cell-inner {
display: none;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<x:PageManager ID="PageManager1" runat="server" />
<x:Grid ID="Grid1" Title="表格" EnableFrame="true" EnableCollapse="true" Width="800px" Height="350px" PageSize="10" ShowBorder="true"
ShowHeader="true" AllowPaging="true" runat="server" EnableCheckBoxSelect="True"
DataKeyNames="Id,Name" IsDatabasePaging="true" OnPageIndexChange="Grid1_PageIndexChange">
<Columns>
<x:RowNumberField />
<x:BoundField Width="100px" ColumnID="name" DataField="Name" DataFormatString="{0}"
HeaderText="姓名" />
<x:TemplateField Width="80px" HeaderText="性别">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# GetGender(Eval("Gender")) %>'></asp:Label>
</ItemTemplate>
</x:TemplateField>
<x:BoundField Width="80px" DataField="EntranceYear" HeaderText="入学年份" />
<x:CheckBoxField Width="80px" RenderAsStaticField="true" DataField="AtSchool" HeaderText="是否在校" />
<x:HyperLinkField HeaderText="所学专业" ColumnID="major" DataToolTipField="Major" DataTextField="Major"
DataTextFormatString="{0}" DataNavigateUrlFields="Major" DataNavigateUrlFormatString="http://gsa.ustc.edu.cn/search?q={0}"
DataNavigateUrlFieldsEncode="true" Target="_blank" ExpandUnusedSpace="True" />
<x:BoundField Width="100px" DataField="Fee" ColumnID="fee" HeaderText="学费" />
<x:BoundField Width="100px" DataField="Donate" ColumnID="donate" HeaderText="捐赠金额" />
</Columns>
</x:Grid>
<x:HiddenField runat="server" ID="hfGrid1Summary">
</x:HiddenField>
<br />
<x:Button ID="Button1" runat="server" Text="选中了哪些行" OnClick="Button1_Click">
</x:Button>
<br />
<x:Label ID="labResult" EncodeText="false" runat="server">
</x:Label>
<br />
注:本示例尚未完成!
</form>
<script>
var gridClientID = '<%= Grid1.ClientID %>';
var gridSummaryID = '<%= hfGrid1Summary.ClientID %>';
function calcGridSummary(grid) {
var donateTotal = 0, store = grid.getStore(), view = grid.getView(), storeCount = store.getCount();
// 防止重复添加了合计行
if (Ext.get(view.getNode(storeCount - 1)).hasCls('mygrid-row-summary')) {
return;
}
// 从隐藏字段获取全部数据的汇总
var summaryJSON = JSON.parse(X(gridSummaryID).getValue());
store.add({
'major': '全部合计:',
'donate': summaryJSON['donateTotal'].toFixed(2),
'fee': summaryJSON['feeTotal'].toFixed(2)
});
// 为合计行添加自定义样式(隐藏序号列、复选框列,取消 hover 和 selected 效果)
var summaryNode = Ext.get(view.getNode(storeCount)).addCls('mygrid-row-summary');
// 找到合计行的外部容器节点
var viewportNode = summaryNode.parent('.x-grid-view');
// 删除容器节点下直接子节点为 mygrid-row-summary 的节点
viewportNode.select('>.mygrid-row-summary').remove();
// 创建合计行的副本
var cloneSummaryNode = summaryNode.dom.cloneNode(true);
// 修改合计行的副本的样式绝对定位距离底部0px显示副本默认是占位隐藏 visibility: hidden;
Ext.get(cloneSummaryNode).setStyle({
position: 'absolute',
bottom: 0,
visibility: 'visible'
});
// 向容器节点添加合计行的副本
viewportNode.appendChild(cloneSummaryNode);
}
// 页面第一个加载完毕后执行的函数
function onReady() {
var grid = X(gridClientID);
calcGridSummary(grid);
// 防止选中合计行
grid.addListener('beforeselect', function (sm, record, rowIndex) {
if (Ext.get(grid.getView().getNode(rowIndex)).hasCls('mygrid-row-summary')) {
return false;
}
return true;
});
}
// 页面AJAX回发后执行的函数
function onAjaxReady() {
var grid = X(gridClientID);
calcGridSummary(grid);
}
</script>
</body>
</html>