热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用嵌套的DataGrid实现主从式表的显示(转)

用嵌套的DataGrid实现主从式表的显示(转)[more]用嵌套的DataGrid实现主从式表的显示经过半年的ASP.NET学习和开发的实践,随着学会的东西在不断增
用嵌套的DataGrid实现主从式表的显示 (转)[@more@]

  用嵌套的DataGrid实现主从式表的显示 

经过半年的ASP.NET学习和开发的实践,随着学会的东西在不断增加的同时也发现不会的东西也在不断地增加,尽管如此,在这段时间里还是或多或少地积累了一些个人的开发经验,最重要的是学会如何更加充分地利用已经知道的知识和技术来完成自己想要达到的目的。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

  如何实现主从式表的显示问题是我开发中所遇到的一个难题,在这个问题中还涉及到在DataGrid中使用复选框控件和定制DataGrid的单元格的问题。下面就这三个问题逐一进行解决。

  一、在DataGrid中使用复选框控件

  这个问题的解决有几种方式,我选用了一种既适用于复选框控件又适用于单选框控件的方式。具体实现如下:

  为DataGrid创建一个ButtonColumn,或者创建一个模板列,在模板列中放入一个Label控件(注:这些控件的选择并不是唯一的)。然后在DataGrid的ItemDataBound事件过程中生成复选框控件(单选框控件)的HTML标记并设置其相应的属性,就可以实现在DataGrid表中进行多选(单选)的功能。生成复选框控件的HTML标记的语句如下:

 1 If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then

   2  Dim r As LinkButton

   3  r = e.Item.Cells(2).Controls(0)

  4  r.Text = ""

 5  End If

  这种情况下,checkbox或radio不能自动进行状态的管理,需要手动维持状态,也就是在表单提交到服务器返回浏览器显示的时候能够显示出提交前所进行的最后选择。这一步的实现并不难,先通过selectResult = Request.Form("chbRights")语句获得表单提交的选择结果,然后将上面的第4句作如下修改:

    if SelectResult.IndexOf(strID) <> -1 then

    r.Text &#61; ""

    else

  r.Text &#61; ""

    end if

  二、定制DataGrid的单元格

  假设要完成的表格样式如下&#xff1a;

Header1

Header2

Header3

Header4

Item1

DataGrid1

Item2

DataGrid2

  表1

其中Header有4列&#xff0c;每个Item只有2列。

  这个是在DataGrid的ItemCreated事件过程中来具体实现的。首先创建Header&#xff0c;对于以上表格而言&#xff0c;它的Header缺省的是和Item一样有2列。那么我们要先清除Header中缺省的单元格控件&#xff0c;然后逐一创建Header1、Header2、Header3、Header4四个单元格控件。具体实现如下&#xff1a;

1、 利用语句e.Item.ItemType &#61; ListItemType.Header来找到DataGrid的Header&#xff1b;

2、 清除Header中的缺省控件&#xff1b;

     e.Item.Controls.Clear()

3、 创建新的单元格控件&#xff0c;

   dim cell0 as new TableCell

  cell0.Controls.Add(new LiteralControl("Header1"))

   e.Item.Controls.Add(cell0)

  并可以通过以下语句对单元格的风格、背景、宽度、高度、位置等属性进行设置&#xff1a;

   cell0.MergeStyle(dgAllRights.HeaderStyle)

   cell0.BackColor &#61; Color.FromName("#8faae7")

     cell0.Width &#61; Unit.Percentage(10)

     cell0.Height &#61; Unit.Pixel(intHeight)

   cell0.HorizontalAlign &#61; HorizontalAlign.Center

4、 重复第3步&#xff0c;创建其它三个单元格控件。

  到此为止&#xff0c;Header就创建好了&#xff0c;但是由于Header的改变&#xff0c;导致Item的列出现了变化&#xff0c;由2列变成了4列&#xff0c;所以我们需要进行Item的单元格合并操作&#xff0c;具体语句如下&#xff1a;

    &#39;设置Item第二列的ColumnSpan合并单元格属性

    If e.Item.ItemType &#61; ListItemType.AlternatingItem Or e.Item.ItemType &#61; ListItemType.Item Then

     dim cell as TableCell

     cell &#61; e.Item.Cells(1)

     cell.ColumnSpan &#61; 3

    end if

  三、DataGrid嵌套显示主从式表

  经过以上两个问题的解决&#xff0c;尤其是第二个问题的解决&#xff0c;可以说现在这个问题的实现就非常容易了。

  首先为主DataGrid创建一个模板列&#xff0c;在该模板列中放置从DataGrid控件&#xff0c;从DataGrid控件的ShowHeader属性设为false&#xff0c;复选框控件的使用由从DataGrid控件来实现&#xff0c;而主DataGrid的表格形式要根据上述的第二个问题来定制。所以主DataGrid和从DataGrid控件的数据源也可以是不同的。然后根据自己的需要进行样式的设定&#xff0c;以下是最终形成的结果&#xff1a;

  当然&#xff0c;除了这种方法以外&#xff0c;一定还有其它的方法可以实现&#xff0c;关键是多尝试&#xff0c;在不断尝试的过程中一定会有一些意想不到的收获。


来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/10752043/viewspace-993111/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法律责任。

转:http://blog.itpub.net/10752043/viewspace-993111/



推荐阅读
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • NotSupportedException无法将类型“System.DateTime”强制转换为类型“System.Object”
    本文介绍了在使用LINQ to Entities时出现的NotSupportedException异常,该异常是由于无法将类型“System.DateTime”强制转换为类型“System.Object”所导致的。同时还介绍了相关的错误信息和解决方法。 ... [详细]
author-avatar
天之蓝
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有