Asp.net静态方法之Grid转DataTable方法实现步骤

 更新时间:2013年04月07日 16:05:16   作者:  
GridView绑定DataTable后,如何获取GridView绑定后显示的值,在项目需求的背景下写了一个静态方法,经过在项目中的使用,bug的修复,较为稳定
GridView绑定DataTable后,如何获取GridView绑定后显示的值,在项目需求需要的背景下,搜索了获取单元格显示文本的方法,然后写了一个静态方法,经过在项目中的使用,bug的修复,较为稳定。

独乐乐不如众乐乐,把代码贴出来供大家指正。
复制代码 代码如下:

#region ================GridView转DataTable方法================
/// <summary>GridView转DataTable 版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary>
/// <param name="gv">已绑定数据源的GridView</param>
/// <param name="showHideColumn">是否显示隐藏列</param>
/// <returns>DataTable</returns>
public static DataTable GridViewToDataTable(GridView gv, Boolean showHideColumn)
{
//处理后的数据表
DataTable dt = new DataTable();
//记录符合条件索引
int[] columnIndexs = new int[gv.HeaderRow.Cells.Count];
//记录指示器从0开始
int columnIndexsCount = 0;
//初始化dt列名
for (int i = 0; i < gv.HeaderRow.Cells.Count; i++)
{
//获取列名
string columnName = GetCellText(gv.HeaderRow.Cells[i]);
//string columnName = gv.HeaderRow.Cells[i].Text;
//列名非空//且可见
if (!string.IsNullOrEmpty(columnName))
{
//是否显示隐藏列
if (gv.HeaderRow.Cells[i].Visible || showHideColumn)
{
//列名不允许重复
if (!dt.Columns.Contains(columnName))
{
//dt中新增一列
DataColumn dc = dt.Columns.Add();
//列名
dc.ColumnName = columnName;
//存储的数据类型
dc.DataType = typeof(string);
//记录符合条件的列索引
columnIndexs[columnIndexsCount] = i;
//记录指示器+1
columnIndexsCount++;
}
}
}
}//版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处
//GridView行复制到数组中便于操作
GridViewRow[] allGridViewRow = new GridViewRow[gv.Rows.Count];
gv.Rows.CopyTo(allGridViewRow, 0);
//数据添加到dt中
foreach (GridViewRow row in allGridViewRow)
{
//创建一行
DataRow dr = dt.NewRow();
//符合条件的列
for (int i = 0; i < columnIndexsCount; i++)
{
//获取显示文本并保存
dr[i] = GetCellText(row.Cells[columnIndexs[i]]);
}
//dt中增加此行
dt.Rows.Add(dr);
}
//返回处理后的数据
return dt;
}
/// <summary>GridView转DataTable 版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary>
/// <param name="gv">未绑定数据源的GridView</param>
/// <param name="dtSource">GridView的数据源</param>
/// <param name="showHideColumn">是否显示隐藏列</param>
/// <returns>DataTable</returns>
public static DataTable GridViewToDataTable(GridView gv, DataTable dtSource, Boolean showHideColumn)
{
//绑定原始数据到GridView
gv.DataSource = dtSource;
gv.DataBind();
//设置为不分页
gv.AllowPaging = false;<SPAN style="FONT-FAMILY: Arial, Helvetica, sans-serif">//版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处
//GridView转DataTable并返回
return GridViewToDataTable(gv, showHideColumn);
}
#endregion
#region ================私有工具方法================
/// <summary>获取TableCell的显示文本 版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary>
/// <param name="cell">TableCell</param>
/// <returns>string</returns>
private static string GetCellText(TableCell cell)
{
string cellText = cell.Text;
//常规文本(无控件)直接返回
if (!string.IsNullOrEmpty(cellText))
{
//返回显示文本
return cellText.Replace("&nbsp;", "");
}
//遍历cell中的控件
foreach (Control control in cell.Controls)
{
if (control != null && control is IButtonControl)
{
IButtonControl btn = control as IButtonControl;
cellText += btn.Text.Replace("\r\n", "").Trim();
continue;
}版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处
if (control != null && control is ITextControl)
{
LiteralControl lc = control as LiteralControl;
if (lc != null)
{
//跳出到下一步foreach
continue;
}
ITextControl l = control as ITextControl;
cellText += l.Text.Replace("\r\n", "").Trim();
continue;
}
}
//返回显示文本
return cellText;
}
#endregion
</SPAN>

相关文章

  • asp.net操作Word实现批量替换

    asp.net操作Word实现批量替换

    这篇文章主要介绍了asp.net操作Word实现批量替换的方法,需要的朋友可以参考下
    2015-10-10
  • SignalR Self Host+MVC等多端消息推送服务(二)

    SignalR Self Host+MVC等多端消息推送服务(二)

    这篇文章主要为大家详细介绍了SignalR Self Host+MVC等多端消息推送服务的第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • ASP.NET中Session和Cache的区别总结

    ASP.NET中Session和Cache的区别总结

    这篇文章主要介绍了ASP.NET中Session和Cache的区别总结,本文结合使用经验,总结出了5点Session缓存和Cache缓存的区别,需要的朋友可以参考下
    2015-06-06
  • .net自带的库生成zip文件的方法

    .net自带的库生成zip文件的方法

    平时我们创建Zip文件的时候,要么用现成的软件,要么用第三方的开源库。其实用.net自带的类操作起来也非常方便
    2012-08-08
  • 在ASP.NET中用存储过程执行SQL语句

    在ASP.NET中用存储过程执行SQL语句

    存储过程:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
    2010-04-04
  • ASP.NET Core 3.0使用gRPC的具体方法

    ASP.NET Core 3.0使用gRPC的具体方法

    这篇文章主要介绍了ASP.NET Core 3.0使用gRPC,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • asp.net 验证码的简单制作(vb.net+C#)

    asp.net 验证码的简单制作(vb.net+C#)

    asp.net中实现简单验证码的方法,需要的朋友可以参考下
    2012-05-05
  • .Net Core + Nginx实现项目负载均衡的全步骤

    .Net Core + Nginx实现项目负载均衡的全步骤

    这篇文章主要给大家介绍了关于.Net Core + Nginx实现项目负载均衡的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • asp.net中强制取消TFS2008中其它成员的签出文件的方法

    asp.net中强制取消TFS2008中其它成员的签出文件的方法

    有个项目,以前的成员离职了,刚好又签出了一个文件在TFS中并且上了锁,导致后面的维护无法签入和生成。在网上查了一下,找到了如下解决办法
    2012-08-08
  • asp.net 读取配置文件方法

    asp.net 读取配置文件方法

    asp.net 读取配置文件方法,需要的朋友可以参考下。
    2011-12-12

最新评论