手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >Asp.net静态方法之Grid转DataTable方法实现步骤
Asp.net静态方法之Grid转DataTable方法实现步骤
摘要:GridView绑定DataTable后,如何获取GridView绑定后显示的值,在项目需求需要的背景下,搜索了获取单元格显示文本的方法,然...

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>//版权:求知域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("", "");

}

//遍历cell中的控件

foreach (Control control in cell.Controls)

{

if (control != null && control is IButtonControl)

{

IButtonControl btn = control as IButtonControl;

cellText += btn.Text.Replace("rn", "").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("rn", "").Trim();

continue;

}

}

//返回显示文本

return cellText;

}

#endregion

</SPAN>

【Asp.net静态方法之Grid转DataTable方法实现步骤】相关文章:

asp.net gridview多页时的批量删除

ASP.NET DataTable去掉重复行的2种方法

asp.net repeater实现批量删除第1/2页

如何用Response.Redirect方法传递汉字

asp.net 生成静态时的过滤viewstate的实现方法

asp.net刷新本页面的六种方法

asp.net 购物车实现详细代码

asp.net 文件下载实现代码

asp.net Hashtable 遍历写法

asp.net GridView和DataList实现鼠标移到行行变色

精品推荐
分类导航