自定义表头Datagrid
自定义的一个表头
<bp:BasePage x:Class="NetReform.Pages.RealProbabiTableCompare"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:NetReform"
xmlns:bp="clr-namespace:NetReform.Pages"
mc:Ignorable="d"
xmlns:my="clr-namespace:WpfControls;assembly=WpfControls"
Title="RealProbabiTableCompare" >
<Grid > <Grid.Resources> <!--背景色改变必须先设置cellStyle 因为cellStyle会覆盖rowStyle样式-->
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="#F2F2F2" />
<Setter Property="Height" Value=""/>
<Setter Property="Foreground" Value="Black" />
<Style.Triggers>
<!--隔行换色-->
<Trigger Property="AlternationIndex" Value="" >
<Setter Property="Background" Value="#e7e7e7" />
</Trigger>
<Trigger Property="AlternationIndex" Value="" >
<Setter Property="Background" Value="#f2f2f2" />
</Trigger> <Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightGray"/>
<!--<Setter Property="Foreground" Value="White"/>-->
</Trigger> <Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
<!--原来的样式-->
<Style TargetType="TextBlock">
<Setter Property="HorizontalAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center"/>
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontSize" Value="" />
<Setter Property="Foreground" Value="#FFFAF0" />
</Style> <Style x:Key="br_bgGray" TargetType="Border">
<Setter Property="Background" Value="#dbdbdb"/>
</Style> <Style TargetType="Grid" x:Key="MyDataGrid">
<Setter Property="Background" >
<Setter.Value>
<!--垂直渐变-->
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#555555" Offset="0.0"/>
<GradientStop Color="#111111" Offset="0.5"/>
<GradientStop Color="#555555" Offset="1.0"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" >
<Setter.Value>
<!--垂直渐变-->
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#FF111111" Offset="0.0"/>
<GradientStop Color="#FF333333" Offset="1.0"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style> </Grid.Resources> <Grid.RowDefinitions>
<RowDefinition Height="" />
<RowDefinition Height="" />
<RowDefinition Height=""/>
<RowDefinition Height="*"/>
<RowDefinition Height=""/>
</Grid.RowDefinitions> <!--第一行--> <Label Content="概率预报对比" FontSize="" Foreground="White" Grid.Row="" Background="Gray"></Label> <!--第三行放表格头-->
<Grid Margin="10,10,10,0" Grid.Row="" Panel.ZIndex="" Style="{StaticResource MyDataGrid}" >
<Grid.RowDefinitions>
<RowDefinition Height="4*" />
<RowDefinition Height="66*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="8*"/>
<ColumnDefinition Width="16*"/>
<ColumnDefinition Width="13*"/>
<ColumnDefinition Width="18*"/>
<ColumnDefinition Width="16*"/>
<ColumnDefinition Width=""/>
</Grid.ColumnDefinitions>
<Border BorderThickness="" BorderBrush="Gray" CornerRadius="" Grid.RowSpan="">
<TextBlock HorizontalAlignment="Center" >ID</TextBlock>
</Border>
<Border Grid.Column="" BorderThickness="" BorderBrush="Gray" CornerRadius="" Grid.RowSpan="">
<TextBlock HorizontalAlignment="Center" >Date</TextBlock>
</Border> <Border Grid.Column="" Grid.ColumnSpan="" BorderThickness="" BorderBrush="Gray" CornerRadius="" Grid.RowSpan="">
<Grid >
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Grid.Row="" Grid.ColumnSpan="" BorderThickness="" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.ColumnSpan="">太阳耀斑概率</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="0,1,1,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">obs</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="0,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">1d(%)</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="1,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">2d(%)</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="1,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">3d(%)</TextBlock>
</Border>
</Grid>
</Border> <Border Grid.Column="" Grid.ColumnSpan="" BorderThickness="" BorderBrush="Gray" CornerRadius="" Grid.RowSpan="">
<Grid >
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*" />
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Row="" Grid.ColumnSpan="" BorderThickness="" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.ColumnSpan="">质子事件概率</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="0,1,1,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">obs</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="0,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">1d(%)</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="1,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">2d(%)</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="1,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">3d(%)</TextBlock>
</Border>
</Grid>
</Border> <Border Grid.Column="" Grid.ColumnSpan="" BorderThickness="" BorderBrush="Gray" CornerRadius="" Grid.RowSpan="">
<Grid >
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="9*" />
<ColumnDefinition Width="3*" />
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Row="" Grid.ColumnSpan="" BorderThickness="" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.ColumnSpan="">地磁暴概率</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="0,1,1,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">obs</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="0,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">1d(%)</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="1,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">2d(%)</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="1,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">3d(%)</TextBlock>
</Border>
</Grid>
</Border> <Border Grid.Column="" Grid.ColumnSpan="" BorderThickness="" BorderBrush="Gray" CornerRadius="" Grid.RowSpan="">
<Grid >
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Grid.Row="" Grid.ColumnSpan="" BorderThickness="" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.ColumnSpan="">高能电子暴概率</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="0,1,1,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">obs</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="0,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">1d(%)</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="1,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">2d(%)</TextBlock>
</Border>
<Border Grid.Row="" Grid.Column="" BorderThickness="1,1,0,0" BorderBrush="Gray" CornerRadius="">
<TextBlock Grid.Row="" Grid.Column="">3d(%)</TextBlock>
</Border>
</Grid>
</Border> </Grid> <!--第四行放数据--> <DataGrid Grid.Row="" Background="LightGray" Name="dg1" Margin="10,-27,10,0" Grid.Column="" Grid.RowSpan="" ItemsSource="{Binding}" AutoGenerateColumns="False" CanUserAddRows="False" HorizontalScrollBarVisibility="Disabled" AlternationCount="" AreRowDetailsFrozen="True" RowHeaderWidth="" HeadersVisibility="Column" IsReadOnly="True" HorizontalGridLinesBrush="LightGray" VerticalGridLinesBrush="LightGray" Foreground="#FF9C9D9D" BorderBrush="Black" VerticalScrollBarVisibility="Visible"> <DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Height" Value="" />
<Setter Property="Foreground" Value="Black" />
<!--datagrid 垂直居中、水平左对齐 -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Grid Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<!--datagrid 设置选中行的背景色 -->
<Style.Triggers >
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="#00B0C4DE"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<!--ID列-->
<DataGridTemplateColumn Header="ID" Width="4*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Border Height="" Width="">
<TextBlock Foreground="Gray" FontSize="" Height="" FontFamily="Microsoft YaHei" HorizontalAlignment="Left" Margin="9,5,0,0" Background="Transparent" Text="{Binding ID}"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--时间列-->
<DataGridTextColumn Header="Date" FontSize="" Binding="{Binding dayTime}" Width="8*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn> <!--<DataGridTextColumn Header="CNum" FontSize="" Binding="{Binding value}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei"> </DataGridTextColumn>-->
<DataGridTemplateColumn Header="obs" Width="4*" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Border Height="" Width="" Style="{StaticResource ResourceKey=br_bgGray}">
<TextBlock Foreground="Gray" FontSize="" Height="" FontFamily="Microsoft YaHei" HorizontalAlignment="Left" Margin="9,5,0,0" Background="Transparent" Text="{Binding value}"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="1d" FontSize="" Binding="{Binding pre1}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>
<DataGridTextColumn Header="2d" FontSize="" Binding="{Binding pre2}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>
<DataGridTextColumn Header="3d" FontSize="" Binding="{Binding pre3}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn> <!--kp列要更改的位置就是这里-->
<!--<DataGridTextColumn Header="CNum" FontSize="" Binding="{Binding valueu}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>--> <DataGridTemplateColumn Header="obs" Width="4*" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Border Height="" Width="" Style="{StaticResource ResourceKey=br_bgGray}">
<TextBlock Foreground="Gray" FontSize="" Height="" FontFamily="Microsoft YaHei" HorizontalAlignment="Left" Margin="9,5,0,0" Background="Transparent" Text="{Binding valueu}"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="1d" FontSize="" Binding="{Binding pre1u}" Width="3*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>
<DataGridTextColumn Header="2d" FontSize="" Binding="{Binding pre2u}" Width="3*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>
<DataGridTextColumn Header="3d" FontSize="" Binding="{Binding pre3u}" Width="3*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn> <!--<DataGridTextColumn Header="CNum" FontSize="" Binding="{Binding valuem}" Width="7*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>-->
<DataGridTemplateColumn Header="obs" Width="9*" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Border Height="" Width="" Style="{StaticResource ResourceKey=br_bgGray}">
<TextBlock Foreground="Gray" FontSize="" Height="" FontFamily="Microsoft YaHei" HorizontalAlignment="Left" Margin="9,5,0,0" Background="Transparent" Text="{Binding valuem}"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> <DataGridTextColumn Header="1d" FontSize="" Binding="{Binding pre1m}" Width="3*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>
<DataGridTextColumn Header="2d" FontSize="" Binding="{Binding pre2m}" Width="3*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>
<DataGridTextColumn Header="3d" FontSize="" Binding="{Binding pre3m}" Width="3*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn> <!--<DataGridTextColumn Header="CNum" FontSize="" Binding="{Binding valuec}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>-->
<DataGridTemplateColumn Header="obs" Width="4*" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Border Height="" Width="" Style="{StaticResource ResourceKey=br_bgGray}">
<TextBlock Foreground="Gray" FontSize="" Height="" FontFamily="Microsoft YaHei" HorizontalAlignment="Left" Margin="9,5,0,0" Background="Transparent" Text="{Binding valuec}"/>
</Border>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> <DataGridTextColumn Header="1d" FontSize="" Binding="{Binding pre1c}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>
<DataGridTextColumn Header="2d" FontSize="" Binding="{Binding pre2c}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn>
<DataGridTextColumn Header="3d" FontSize="" Binding="{Binding pre3c}" Width="4*" Foreground="Gray" FontFamily="Microsoft YaHei">
</DataGridTextColumn> </DataGrid.Columns>
</DataGrid> <!--第五行放数据处理后的值-->
<StackPanel Grid.Row="" Orientation="Horizontal" HorizontalAlignment="Center">
<Label Content="From:" HorizontalContentAlignment="Right" Style="{StaticResource QueryLabel}"></Label>
<DatePicker Width="" Height="" x:Name="Dp_Start" BorderThickness="" HorizontalAlignment="Center" VerticalContentAlignment="Center" /> <Label Content="To:" HorizontalContentAlignment="Right" Style="{StaticResource QueryLabel}"></Label>
<DatePicker Width="" Height="" x:Name="Dp_End" BorderThickness="" HorizontalAlignment="Center" VerticalContentAlignment="Center" />
<Button Name="Bt_CheckCurr" Style="{StaticResource Button_Image}" Width="" Height="" HorizontalAlignment="Left" ToolTip="查询" >
<Image Source="/NetReform;component/Images/Search.png" Width="" Height="" />
</Button>
</StackPanel>
</Grid>
</bp:BasePage>
自定义表头Datagrid的更多相关文章
- WPF DataGrid 复合表头 (实现表头合并,自定义表头)
功能说明: 将 DataGrid嵌套在本控件内,使用Label自定义表头,如果需要上下左右滚动 需要在控件外围添加 ScrollViewer 并且设置 ScrollVisibility 为Auto ...
- QTableWidget自定义表头QHeaderView加全选复选框
1 QTableWidget自定义表头QHeaderView加全选复选框 在使用QTableWidget时需要在表头添加全选复选框,但是默认的表头无法添加复选框,只能用图片画上去一个复 ...
- vue + element ui 表格自定义表头,提供线上demo
前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...
- ElementUI2.0组件库el-table表格组件如何自定义表头?
效果图: npm run dev 编译项目之后,报错,要使用jsx语法需要先安装编译插件 1.安装下列安装包 npm install babel-plugin-syntax-jsx --save-de ...
- element之table自定义表头
1.实现效果 2.使用render-header可以自定义表头 <el-table-column prop="date" label="日期" sorta ...
- ElementUI的Table-column_render-header自定义表头
ElementUI的Table表格,官方网站上提供了很多样式,但是在日常开发中还会碰到各种情况,显然官方提供的是不能满足需求的.那么,我们就根据自己的需求对table进行改造. 先丢出关于Table的 ...
- gridview自定义表头
gridview为我们提供了丰富的接口,用于满足自定义需求. 通常asp:gridview会根据绑定的列Columns自动生成表头,展现在前台元素. 序号 类别 有时候需要复杂一些的表头. 序号 类别 ...
- [Qt]自定义表头实现过滤功能
1. 写在前面 过滤功能源自项目上交互优化用户体验,在表头添加过滤符号实现过滤,替换以往在表格上方占用一行过滤项进行过滤. 2. 过滤提示 过滤提示就是三态图标(normal,hover,press) ...
- element ui table render-header自定义表头信息使用
在使用vue自定义组件内容过程之中,我们绝大多数情况下都是通过预先写好不同的html模板,再通过props传入不同的值来渲染不同的模板.例如我们需要实现一个<v-title size='1'&g ...
随机推荐
- 【linux】【jenkins】jenkins构建、mvn或者npm打包、docker运行、失败自动回滚脚本
小白对jenkins运维的使用有点简单的想法,这里开个记录贴记录下. 由于未找到jenkins构建失败后执行其他脚本的插件,也暂时没有使用其他运维工具.所以想自己写一个shell脚本,一是方便其他人使 ...
- 机器学习之SVM调参实例
一.任务 这次我们将了解在机器学习中支持向量机的使用方法以及一些参数的调整.支持向量机的基本原理就是将低维不可分问题转换为高维可分问题,在前面的博客具体介绍过了,这里就不再介绍了. 首先导入相关标准库 ...
- Eclipse的egit插件冲突合并方法
Eclipse有一个git的插件叫EGit,用于实现本地代码和远程代码对比.合并以及提交.但是在本地代码和远程代码有冲突的时候,EGit的处理方案还是有点复杂.今天就彻底把这些步骤给理清楚,并公开让一 ...
- centos7 远程连接其他服务器redis
在本地远程连接 在终端输入: redis-cli -h 服务器ip地址 -p 端口 -a 密码
- mysql执行过程以及顺序
前言:mysql在我们的开发中基本每天都要面对的,作为开发中的数据中间件,mysql承担者存储数据和读写数据的职责.因为学习和了解mysql是至关重要的,那么当我们在客户端发起一个sql到出现详细的查 ...
- Elasticsearch实战-磁盘IO被打满
背景 事情是这样的.一天下午4点42分左右.业务反馈我开发的服务在测试环境出现问题,返回资源数据是0.查日志发现是ES访问超时.相当于数据库挂了.持续了20多分钟自己恢复.咨询了ES团队,最终得到下面 ...
- restapi(7)- 谈谈函数式编程的思维模式和习惯
国庆前,参与了一个c# .net 项目,真正重新体验了一把搬砖感觉:在一个多月时间好像不加任何思考,不断敲键盘加代码.我想,这也许是行业内大部分中小型公司程序猿的真实写照:都是坐在电脑前的搬砖工人.不 ...
- 如何在linux下编写一个简单的Shell脚本程序
在了解了linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了 Shell既为一种命令解释解释工具,又是一种脚本编程语言 ...
- 常用css总结
个人博客: https://chenjiahao.xyz 1.让网站快速变灰 html { filter: grayscale(100%);//IE浏览器 -webkit-filter: graysc ...
- Web开发小贴士 -- 全面了解Cookie
一.Cookie的出现 浏览器和服务器之间的通信少不了HTTP协议,但是因为HTTP协议是无状态的,所以服务器并不知道上一次浏览器做了什么样的操作,这样严重阻碍了交互式Web应用程序的实现. 针对上述 ...