开发者社区> 老朱教授> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

DataGrid相邻行有相同内容时对指定列合并和C#可以实现DLL库的动态调用

简介:
+关注继续查看

ExpandedBlockStart.gif/// <summary>
InBlock.gif
/// DataGrid相邻行有相同内容时对指定列合并
InBlock.gif
/// </summary>
InBlock.gif
/// <param name="spangrid">格式化的DataGrid的ID</param>
InBlock.gif
/// <param name="spancell">要合并的列</param>        
ExpandedBlockEnd.gif
/// <param name="spanby">合并所依据数据的列</param>

None.gif    public void FormatGrid(DataGrid spangrid,int spancell,int spanby)
ExpandedBlockStart.gif    
{
InBlock.gif      
if(spanby<0 || spanby>spangrid.Items.Count)
InBlock.gif          
return;
InBlock.gif          
int rowspan = 1;
InBlock.gif          
for(int i = 1;i<spangrid.Items.Count;i++)
ExpandedSubBlockStart.gif         
{
InBlock.gif        
if(spangrid.Items[i].Cells[spanby].Text == spangrid.Items[i-1].Cells[spanby].Text)
ExpandedSubBlockStart.gif            
{
InBlock.gif                
InBlock.gif               rowspan 
+=1;
InBlock.gif               spangrid.Items[i].Cells[spancell].Visible 
= false;
InBlock.gif               spangrid.Items[i
-rowspan+1].Cells[spancell].RowSpan = rowspan;
ExpandedSubBlockEnd.gif            }

InBlock.gif        
else
ExpandedSubBlockStart.gif        
{    
InBlock.gif           
string str = spangrid.Items[i].Cells[spanby].Text;
InBlock.gif           
string str1 = spangrid.Items[i-1].Cells[spanby].Text;
InBlock.gif           rowspan 
= 1;
ExpandedSubBlockEnd.gif        }
    
ExpandedSubBlockEnd.gif              }

ExpandedBlockEnd.gif    }
 
None.gif
C#可以实现DLL库的动态调用
None.gifAssembly assmebly = Assembly.LoadFile(@"C:WindowsApplication2005-09-30.dll");
None.gifType t 
= assmebly.GetType("WindowsApplication2005_09_30.Class1");
None.gif
object obj = Activator.CreateInstance(t,null);
None.gifMethodInfo method 
= t.GetMethod("Test01");
ExpandedBlockStart.gif
int i = (int)method.Invoke(obj,new object[1]{10});
None.gif
namespace WindowsApplication2005_09_30
ExpandedBlockStart.gif
{
InBlock.gif
public class Class1
ExpandedSubBlockStart.gif
{
InBlock.gif
public int Test01(int i)
ExpandedSubBlockStart.gif
{
InBlock.gif
return i*10;
ExpandedSubBlockEnd.gif}

ExpandedSubBlockEnd.gif}

ExpandedBlockEnd.gif}
posted on 2005-10-11 19:09 高海东 阅读(1011) 评论(3编辑 收藏

评论

#1楼 2007-06-08 00:48 wdx2008  
收藏
  

#2楼[楼主2008-09-20 08:23 高海东  
有时候我们需要,设置gridview的表格线,研究了好久,找了很多资料,终于解决

GridView1.Attributes.Add(
"BorderColor""#0693F5");

 

如果如下设置,结果表格边框的颜色变了.

<asp:GridView ID="GridView1" runat="server" BorderColor="red">
 
</asp:GridView>

到页面看源代码

<table cellspacing="0"  border="1" id="GridView1" style="border-color:Red;border-collapse:collapse;">
  
<tr>.

其中BorderColor
="red 解释成了style="border-color:Red了,但是这并不是我们所要的.我们要的表格线的颜色为红色,而不是表格边框颜色为红色,所以只能在GridView呈现前添加属性

GridView1.Attributes.Add(
"BorderColor""#0693F5");
  

#3楼[楼主2008-09-20 08:35 高海东  
 #region 合并单元格 合并某一行的所有列
        
///   <summary>   
        
///   合并GridView中某行相同信息的行(单元格)
        
///   </summary>   
        
///   <param   name="GridView1">GridView对象</param>   
        
///   <param   name="cellNum">需要合并的行</param>
        public static void GroupRow(GridView GridView1, int rows)
        {
            TableCell oldTc 
= GridView1.Rows[rows].Cells[0];
            
for (int i = 1; i < GridView1.Rows[rows].Cells.Count; i++)
            {
                TableCell tc 
= GridView1.Rows[rows].Cells[i];   //Cells[0]就是你要合并的列
                if (oldTc.Text == tc.Text)
                {
                    tc.Visible 
= false;
                    
if (oldTc.ColumnSpan == 0)
                    {
                        oldTc.ColumnSpan 
= 1;
                    }
                    oldTc.ColumnSpan
++;
                    oldTc.VerticalAlign 
= VerticalAlign.Middle;

                }
                
else
                {
                    oldTc 
= tc;
                }
            }
        }
        
#endregion

        
#region 合并单元格 合并一行中的几列
        
/// <summary>
        
/// 合并单元格 合并一行中的几列
        
/// </summary>
        
/// <param name="GridView1">GridView ID</param>
        
/// <param name="rows"></param>
        
/// <param name="sCol">开始列</param>
        
/// <param name="eCol">结束列</param>
        public static void GroupRow(GridView GridView1, int rows,int sCol,int eCol)
        {
             TableCell oldTc 
= GridView1.Rows[rows].Cells[sCol];
            
for (int i = 1; i < eCol - sCol; i++)
            {
                TableCell tc 
= GridView1.Rows[rows].Cells[i + sCol];   //Cells[0]就是你要合并的列
                tc.Visible = false;
                
if (oldTc.ColumnSpan == 0)
                {
                   oldTc.ColumnSpan 
= 1;
                }
                oldTc.ColumnSpan
++;
                oldTc.VerticalAlign 
= VerticalAlign.Middle;
            }
        }
        
#endregion

 

        
#region 合并单元格 合并某一列所有行
        
/// <summary>
        
/// 合并GridView中某列相同信息的行(单元格)
        
/// </summary>
        
/// <param name="GridView1"></param>
        
/// <param name="cellNum"></param>
        public static void GroupCol(GridView GridView1, int cols)
        {
            
if (GridView1.Rows.Count < 1 || cols > GridView1.Rows[0].Cells.Count - 1)
            {
                
return;
            }

            TableCell oldTc 
= GridView1.Rows[0].Cells[cols];
            
for (int i = 1; i < GridView1.Rows.Count; i++)
            {
                TableCell tc 
= GridView1.Rows[i].Cells[cols];
                
if (oldTc.Text == tc.Text)
                {
                    tc.Visible 
= false;
                    
if (oldTc.RowSpan == 0)
                    {
                        oldTc.RowSpan 
= 1;
                    }
                    oldTc.RowSpan
++;
                    oldTc.VerticalAlign 
= VerticalAlign.Middle;
                }
                
else
                {
                    oldTc 
= tc;
                }
            }
        }
        
#endregion

        
#region 合并单元格 合并某一列中的某些行
        
/// <summary>
        
/// 合并单元格 合并某一列中的某些行
        
/// </summary>
        
/// <param name="GridView1">GridView ID</param>
        
/// <param name="cellNum"></param>
        
/// <param name="sRow">开始行</param>
        
/// <param name="eRow">结束列</param>
        public static void GroupCol(GridView GridView1, int cols,int sRow,int eRow)
        {
            
if (GridView1.Rows.Count < 1 || cols > GridView1.Columns.Count - 1)
            {
                
return;
            }

            TableCell oldTc 
= GridView1.Rows[sRow].Cells[cols];
            
for (int i = 1; i < eRow - sRow; i++)
            {
                TableCell tc 
= GridView1.Rows[sRow + i].Cells[cols];   
                tc.Visible 
= false;
                
if (oldTc.RowSpan == 0)
                {
                    oldTc.RowSpan 
= 1;
                }
                oldTc.RowSpan
++;
                oldTc.VerticalAlign 
= VerticalAlign.Middle;
            }
        }
        
#endregion



本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/10/11/252577.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C# /VB.NET 创建PDF项目符号列表和多级编号列表
使用项目符号和编号,可以让文档的层次结构更清晰、更有条理,也更容易突出重点。在编辑文档的过程中,我个人也比较偏爱项目标号来标注文章重点信息。在之前的文章中,介绍了如何在Word中来创建项目标号和编号列表,在本篇文章中,将介绍创建PDF项目符号列表和多级编号列表的方法。
3390 0
详解WPF Blend工具中的复合路径功能 ( 含路径标记语法 )
原文:详解WPF Blend工具中的复合路径功能 ( 含路径标记语法 ) 写此文章的目的是为了简单分析一下 Blend工具中提供的"复合路径"功能.有人在我的博文中留言问我复合路径的问题.  稍微琢磨一下,觉得应该是对的.
1258 0
ArcGIS按字段属性分割文件
在ArcGIS中我们有时需要将一个文件安字段的属性分割成多个文件,网友总结了几乎所有的方法:http://blog.sina.com.cn/s/blog_4e87fb4c0100fcjh.html ,我也来测试一下效果。
853 0
winform 按顺序连续打印多个PDF文件
原文:winform 按顺序连续打印多个PDF文件 关于PDF打印的问题,前面有篇文章(点这里查看)也叙述过,今天来谈谈另外一种方法 其实方法很简单,因为需要把多个PDF文档按顺序连续打印,为此我们为什么不把要打印的pdf文档按顺序合并成一个PDF打印呢?如此就简单多了哦。
1038 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载