华域联盟 .Net Asp.net静态方法之Grid转DataTable方法实现步骤

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

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实现导出DataTable数据到Word或者Excel的方法
  • asp.net实现数据从DataTable导入到Excel文件并创建表的方法
  • Asp.net中DataTable导出到Excel的方法介绍
  • asp.net 读取Excel数据到DataTable的代码
  • ASP.NET DataTable去掉重复行的2种方法
  • ASP.NET中DataTable与DataSet之间的转换示例
  • ASP.NET怎么操作DataTable实例应用
  • Asp.net下使用Jquery Ajax传送和接收DataTable的代码
  • asp.net 数据库的连接和datatable类
  • Asp.net实现选择性的保留DataTable中的列
  • asp.net DataTable导出Excel自定义列名的方法

本文由 华域联盟 原创撰写:华域联盟 » Asp.net静态方法之Grid转DataTable方法实现步骤

转载请保留出处和原文链接:https://www.cnhackhy.com/48787.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部