`
tubaluer
  • 浏览: 1499736 次
文章分类
社区版块
存档分类
最新评论
  • sblig: c / c++ 是不一样的都会输出 100
    j = j++

DataGrid应用(二) —— 滚动条的设计

 
阅读更多

为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滑动条

    本篇将详细介绍如何在WPF的`DataGrid`中实现滚动条功能,以及一些相关的高级技巧。 1. **基本滚动条设置** - 默认情况下,如果`DataGrid`的内容超过了其可视区域,WPF会自动添加垂直滚动条。但如果你需要自定义...

    (datagrid)4种滚动条对齐解决方案

    ASP.NET AJAX Control Toolkit提供了一个名为`ScrollingGridView`的控件,它是`GridView`的扩展,专为解决滚动条对齐问题而设计。这个控件在有滚动条时会自动保持标题和内容列对齐。 ```xml &lt;!-- 添加你的列 --...

    silverlight DataGrid 外置滚动条

    默认情况下,DataGrid内部包含了水平和垂直滚动条,但有时为了界面设计或用户交互的需求,我们可能希望将滚动条放在DataGrid外部。这可以通过自定义样式和模板来完成。我们需要创建一个新的ScrollViewer控件,将其...

    wpf DataGridStyle

    通过理解并熟练运用`Style`、`Trigger`以及`ControlTemplate`,你可以实现对`DataGrid`各个方面的精细化设计,包括列标题、行、鼠标悬浮效果以及滚动条。这不仅可以使应用程序的界面更符合业务需求,也能提升整体的...

    WPF中自定义Scrollbar 滚动条 样式 图片

    总的来说,WPF的自定义能力使得滚动条可以根据设计需求进行高度定制,无论是颜色调整还是图片应用,都能实现独特的视觉效果。只要理解了样式和模板的工作原理,就能创造出极具个性化的用户界面。在实际开发中,确保...

    wpf滚动条样式

    在Windows Presentation Foundation(WPF)中,滚动条是用户界面中的一...通过这种方式,开发者可以创造出符合应用设计风格的独特滚动条,提高用户体验。同时,WPF的强大学习曲线和灵活性使得这种定制变得可能且有趣。

    WPF拖动DataGrid滚动条时内容混乱的解决方法

    然而,在实际使用中,尤其是在处理大量数据或使用模板列时,可能会遇到一个常见的问题:当用户拖动滚动条时,DataGrid的内容显示出现混乱。这个问题通常发生在DataGrid的CellTemplate中,特别是当使用TextBox或...

    怎样使DataGrid支持鼠标滚轮滚动记录-精品源代码

    怎样使DataGrid支持鼠标滚轮滚动记录-精品源代码

    VB6.0中DataGrid的应用.doc

    本文将深入探讨DataGrid控件的应用,包括其基本特性、设计时特性、运行时特性和常见用法。 基本特性 DataGrid控件是一种类似于电子数据表的绑定控件,可以显示一系列行和列来表示Recordset对象的记录和字段。它...

    IOS应用源码——自制 iPhone DataGrid 数据列表组件,支持行列锁定Grid.zip

    本资源提供了一个自制的iPhone DataGrid组件,它专为iOS应用设计,支持行列锁定功能,能有效提升用户体验,尤其在处理表格数据时。 这个组件的亮点在于行列锁定功能,这在数据密集型应用中非常实用。行列锁定允许...

    DataGrid鼠标滚动

    综上所述,“DataGrid鼠标滚动”是一个关注于提升老式数据展示控件性能的实例,通过对msflexgrid的改良和扩展,实现了更高效的数据浏览体验,尤其适用于处理大量数据的应用场景。通过学习和应用此示例,开发者可以...

    IOS应用源码——自制 iPhone DataGrid 数据列表组件,支持行列锁定Grid.rar

    这个“自制 iPhone DataGrid 数据列表组件”是一个专门为iOS应用设计的自定义控件,它允许开发者创建类似电子表格的布局,支持行列锁定功能,极大地增强了数据展示的灵活性和用户体验。 在iOS开发中,标准的...

    2.0DataGrid嵌套DataGrid,里面的鼠标滚动响应到外部,利用自定义命令传递滚轮事件参数实现

    2.0DataGrid嵌套DataGrid,里面的鼠标滚动响应到外部,利用自定义命令传递滚轮事件参数实现,详细效果请移步: https://blog.csdn.net/u010438205/article/details/105710794

    Flex实践——Datagrid的打印预览与打印

    本文将围绕“Flex实践——Datagrid的打印预览与打印”这一主题,深入探讨如何在Flex应用中实现数据网格控件Datagrid的打印功能,包括预览和实际打印操作。 首先,Datagrid是Flex中一个非常重要的组件,它用于展示二...

    WPF之DataGrid应用.docx

    【WPF DataGrid应用详解】 在Visual Studio 2010中的C# WPF应用程序中,DataGrid控件是一个强大的工具,用于展示和编辑表格数据。本文将深入讲解如何使用DataGrid,涵盖数据绑定、增删改功能、分页实现以及样式设计...

    FLEX datagrid应用实例

    在本文中,我们将深入探讨基于Adobe Flex的DataGrid组件的应用实例。Flex是一种强大的富互联网应用程序(RIA)开发框架,主要用于构建交互式、响应式的Web应用。DataGrid是Flex中的一个核心组件,它允许开发者以表格...

    flex实现datagrid走马灯(滚动新闻)的效果

    自己写的一个小例子,关于实现datagrid逐行显示的例子,类似于滚动新闻。粗糙

    wpf通过datagrid操作数据库,实现datagrid增删改操作。

    DataGrid是WPF中的一个强大控件,它允许用户以表格的形式展示和编辑数据,非常适合用于数据密集型应用程序。 首先,我们需要了解WPF的基本架构。WPF是.NET Framework的一部分,提供了一种创建桌面应用程序的模型,...

    Winform DataGridView 带有自定义滚动条

    Winform DataGridView 样式, 选中后单元格重绘, DataGridView自定义滚动条,

Global site tag (gtag.js) - Google Analytics