为DataGrid加上滚动条,众所周知可以通过嵌套在<div></div>里来实现。我先总结一下这些方法:
1. 利用div的overflow的特性,我们可以设计出表格的滚动条。但是我们通常需要一个固定不动的表头,因为整个datagrid放在div中,无法使表头固定不动。(方法二,可以利用css固定),我们设计需要另一个<table>来作为表头,同时,将由div包含着的datagrid的表明细行对齐表头,形成完整的表格。格式如下:
<table>
<tr>
<td>
<table>
<!-- 表头部分 -->
</table>
<div style="OVERFLOW: auto;HEIGHT: 300px">
<!-- DataGrid (明细行) -->
</div>
</td>
</tr>
</table>

现在是如何能保证表头和DataGrid中的Cell的宽度对齐。可以看到,将“表头”和 “明细行”放在一个<td>里能保证他们的边缘对齐。现在,如何保证他们中间线对齐呢?
当DataGrid不用表头之后,无法利用表头的Style控制DataGrid中的Cell宽度,为了保证中间的单元格对齐,我们在ItemDataBound里为每个单元格设置宽度。
<style type="text/css">
.cf { font-family: SimSun; font-size: 10pt; color: black; background: silver; border-top: windowtext 1pt solid; padding-top: 0pt; border-left: windowtext 1pt solid; padding-left: 0pt; border-right: windowtext 1pt solid; padding-right: 0pt; border-bottom: windowtext 1pt solid; padding-bottom: 0pt; }
.cl { margin: 0px; }
.cb1 { color: blue; }</style>
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
e.Item.Cells[0].Style.Add("width", "30%");
e.Item.Cells[1].Style.Add("width", "30%");
e.Item.Cells[2].Style.Add("width", "30%");
}
同样,表头里的单元格也设置同样的宽度。效果如下:

2. 上面的方法,比较简单。就是需要添加HTML,而且对于横向的滚动条并没有控制。这里接着说明另一种办法,从codeproject上看来的。主要是通过CSS来控制。原贴地址:http://www.codeproject.com/aspnet/FreezePaneDatagrid.asp
关键是这句:
TH { BORDER-RIGHT: silver 1px solid; FONT-WEIGHT: bold; FONT-SIZE: 14px; Z-INDEX: 10; CURSOR: default; COLOR: white; POSITION: relative; TOP: expression(document.getElementById("div-datagrid").scrollTop-2); BACKGROUND-COLOR: navy; TEXT-ALIGN: center }
我们知道DataGrid被转换成标准HTML标签在客户端显示,表头都将被转换成<TH>标签。首先是位置成为相对,而不是绝对位置显示。顶端位置则是滚动条顶部位置之下2px。
其所用CSS:
效果如下:

利用该CSS以及javascript还可以实现列冻结的效果。
设计一个<asp:TextBox>和<asp:Button>,输入要冻结的列序号,点击按钮实现列冻结。需要在ItemDataBound事件里,设置单元格的CSS:
<style type="text/css">
.cf { font-family: SimSun; font-size: 10pt; color: black; background: silver; border-top: windowtext 1pt solid; padding-top: 0pt; border-left: windowtext 1pt solid; padding-left: 0pt; border-right: windowtext 1pt solid; padding-right: 0pt; border-bottom: windowtext 1pt solid; padding-bottom: 0pt; }
.cl { margin: 0px; }
.cb1 { color: blue; }
.cb2 { color: green; }</style>
private void Button1_Click(object sender, System.EventArgs e)
{
BindData();
}
private void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if(this.TextBox1.Text != "")
{
try
{
int col = Convert.ToInt32(this.TextBox1.Text);
if (col < e.Item.Cells.Count - 1)
{
for(int i=0; i<col; i++)
{
e.Item.Cells[i].CssClass = "locked";
}
}
}
catch
{
//Ignore
}
}
}
分享到:
相关推荐
本篇将详细介绍如何在WPF的`DataGrid`中实现滚动条功能,以及一些相关的高级技巧。 1. **基本滚动条设置** - 默认情况下,如果`DataGrid`的内容超过了其可视区域,WPF会自动添加垂直滚动条。但如果你需要自定义...
ASP.NET AJAX Control Toolkit提供了一个名为`ScrollingGridView`的控件,它是`GridView`的扩展,专为解决滚动条对齐问题而设计。这个控件在有滚动条时会自动保持标题和内容列对齐。 ```xml <!-- 添加你的列 --...
默认情况下,DataGrid内部包含了水平和垂直滚动条,但有时为了界面设计或用户交互的需求,我们可能希望将滚动条放在DataGrid外部。这可以通过自定义样式和模板来完成。我们需要创建一个新的ScrollViewer控件,将其...
通过理解并熟练运用`Style`、`Trigger`以及`ControlTemplate`,你可以实现对`DataGrid`各个方面的精细化设计,包括列标题、行、鼠标悬浮效果以及滚动条。这不仅可以使应用程序的界面更符合业务需求,也能提升整体的...
总的来说,WPF的自定义能力使得滚动条可以根据设计需求进行高度定制,无论是颜色调整还是图片应用,都能实现独特的视觉效果。只要理解了样式和模板的工作原理,就能创造出极具个性化的用户界面。在实际开发中,确保...
在Windows Presentation Foundation(WPF)中,滚动条是用户界面中的一...通过这种方式,开发者可以创造出符合应用设计风格的独特滚动条,提高用户体验。同时,WPF的强大学习曲线和灵活性使得这种定制变得可能且有趣。
然而,在实际使用中,尤其是在处理大量数据或使用模板列时,可能会遇到一个常见的问题:当用户拖动滚动条时,DataGrid的内容显示出现混乱。这个问题通常发生在DataGrid的CellTemplate中,特别是当使用TextBox或...
怎样使DataGrid支持鼠标滚轮滚动记录-精品源代码
本文将深入探讨DataGrid控件的应用,包括其基本特性、设计时特性、运行时特性和常见用法。 基本特性 DataGrid控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示Recordset对象的记录和字段。它...
本资源提供了一个自制的iPhone DataGrid组件,它专为iOS应用设计,支持行列锁定功能,能有效提升用户体验,尤其在处理表格数据时。 这个组件的亮点在于行列锁定功能,这在数据密集型应用中非常实用。行列锁定允许...
综上所述,“DataGrid鼠标滚动”是一个关注于提升老式数据展示控件性能的实例,通过对msflexgrid的改良和扩展,实现了更高效的数据浏览体验,尤其适用于处理大量数据的应用场景。通过学习和应用此示例,开发者可以...
这个“自制 iPhone DataGrid 数据列表组件”是一个专门为iOS应用设计的自定义控件,它允许开发者创建类似电子表格的布局,支持行列锁定功能,极大地增强了数据展示的灵活性和用户体验。 在iOS开发中,标准的...
2.0DataGrid嵌套DataGrid,里面的鼠标滚动响应到外部,利用自定义命令传递滚轮事件参数实现,详细效果请移步: https://blog.csdn.net/u010438205/article/details/105710794
本文将围绕“Flex实践——Datagrid的打印预览与打印”这一主题,深入探讨如何在Flex应用中实现数据网格控件Datagrid的打印功能,包括预览和实际打印操作。 首先,Datagrid是Flex中一个非常重要的组件,它用于展示二...
【WPF DataGrid应用详解】 在Visual Studio 2010中的C# WPF应用程序中,DataGrid控件是一个强大的工具,用于展示和编辑表格数据。本文将深入讲解如何使用DataGrid,涵盖数据绑定、增删改功能、分页实现以及样式设计...
在本文中,我们将深入探讨基于Adobe Flex的DataGrid组件的应用实例。Flex是一种强大的富互联网应用程序(RIA)开发框架,主要用于构建交互式、响应式的Web应用。DataGrid是Flex中的一个核心组件,它允许开发者以表格...
自己写的一个小例子,关于实现datagrid逐行显示的例子,类似于滚动新闻。粗糙
DataGrid是WPF中的一个强大控件,它允许用户以表格的形式展示和编辑数据,非常适合用于数据密集型应用程序。 首先,我们需要了解WPF的基本架构。WPF是.NET Framework的一部分,提供了一种创建桌面应用程序的模型,...
Winform DataGridView 样式, 选中后单元格重绘, DataGridView自定义滚动条,