Asp.net静态方法之Grid转DataTable方法实现步骤
2023-06-13 09:14:49 时间
GridView绑定DataTable后,如何获取GridView绑定后显示的值,在项目需求需要的背景下,搜索了获取单元格显示文本的方法,然后写了一个静态方法,经过在项目中的使用,bug的修复,较为稳定。
独乐乐不如众乐乐,把代码贴出来供大家指正。
复制代码代码如下:
独乐乐不如众乐乐,把代码贴出来供大家指正。
#region================GridView转DataTable方法================
///<summary>GridView转DataTable版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary>
///<paramname="gv">已绑定数据源的GridView</param>
///<paramname="showHideColumn">是否显示隐藏列</param>
///<returns>DataTable</returns>
publicstaticDataTableGridViewToDataTable(GridViewgv,BooleanshowHideColumn)
{
//处理后的数据表
DataTabledt=newDataTable();
//记录符合条件索引
int[]columnIndexs=newint[gv.HeaderRow.Cells.Count];
//记录指示器从0开始
intcolumnIndexsCount=0;
//初始化dt列名
for(inti=0;i<gv.HeaderRow.Cells.Count;i++)
{
//获取列名
stringcolumnName=GetCellText(gv.HeaderRow.Cells[i]);
//stringcolumnName=gv.HeaderRow.Cells[i].Text;
//列名非空//且可见
if(!string.IsNullOrEmpty(columnName))
{
//是否显示隐藏列
if(gv.HeaderRow.Cells[i].Visible||showHideColumn)
{
//列名不允许重复
if(!dt.Columns.Contains(columnName))
{
//dt中新增一列
DataColumndc=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=newGridViewRow[gv.Rows.Count];
gv.Rows.CopyTo(allGridViewRow,0);
//数据添加到dt中
foreach(GridViewRowrowinallGridViewRow)
{
//创建一行
DataRowdr=dt.NewRow();
//符合条件的列
for(inti=0;i<columnIndexsCount;i++)
{
//获取显示文本并保存
dr[i]=GetCellText(row.Cells[columnIndexs[i]]);
}
//dt中增加此行
dt.Rows.Add(dr);
}
//返回处理后的数据
returndt;
}
///<summary>GridView转DataTable版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary>
///<paramname="gv">未绑定数据源的GridView</param>
///<paramname="dtSource">GridView的数据源</param>
///<paramname="showHideColumn">是否显示隐藏列</param>
///<returns>DataTable</returns>
publicstaticDataTableGridViewToDataTable(GridViewgv,DataTabledtSource,BooleanshowHideColumn)
{
//绑定原始数据到GridView
gv.DataSource=dtSource;
gv.DataBind();
//设置为不分页
gv.AllowPaging=false;<SPANstyle="FONT-FAMILY:Arial,Helvetica,sans-serif">//版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处
//GridView转DataTable并返回
returnGridViewToDataTable(gv,showHideColumn);
}
#endregion
#region================私有工具方法================
///<summary>获取TableCell的显示文本版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处</summary>
///<paramname="cell">TableCell</param>
///<returns>string</returns>
privatestaticstringGetCellText(TableCellcell)
{
stringcellText=cell.Text;
//常规文本(无控件)直接返回
if(!string.IsNullOrEmpty(cellText))
{
//返回显示文本
returncellText.Replace(" ","");
}
//遍历cell中的控件
foreach(Controlcontrolincell.Controls)
{
if(control!=null&&controlisIButtonControl)
{
IButtonControlbtn=controlasIButtonControl;
cellText+=btn.Text.Replace("\r\n","").Trim();
continue;
}版权:求知域http://www.qqextra.com,http://blog.csdn.net/ls_man转载请注明出处
if(control!=null&&controlisITextControl)
{
LiteralControllc=controlasLiteralControl;
if(lc!=null)
{
//跳出到下一步foreach
continue;
}
ITextControll=controlasITextControl;
cellText+=l.Text.Replace("\r\n","").Trim();
continue;
}
}
//返回显示文本
returncellText;
}
#endregion
</SPAN>
相关文章
- 宝塔面板Linux系统通过Docker部署VB.NET Asp.Net Core WebAPI应用
- ASP.NET操作MySQL数据库技术实例(aspx操作mysql)
- Nginx高性能Web服务器:Nginx与jsp、asp.net、perl的安装与配置(第五章)
- 数据交互实现ASP页面与MySQL数据交互最佳方法(asp页面与mysql)
- ASP.NET中的正则表达式
- ASP.net(c#)用类的思想实现插入数据到ACCESS例子
- asp.net下Request.QueryString取不到值的解决方法
- asp.net序列化and反序列化演示
- asp.net正则表达式[经常用的到]
- asp.net文件上传与刷新与asp.net页面与iframe之间的数据传输
- ASP.NET中生成Excel遇到的问题及改进方法
- ASP.NET文件断点续传实现代码
- ASP.net(c#)生成条形码code39条码生成方法
- asp.net下String.prototype.split()的兼容问题
- ASP.NET获取真正的客户端IP地址的6种方法
- ASP.NET获取MSSQLServer安装实例实现思路及代码
- ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法
- Asp.net的应用程序对象和页面生存周期
- asp.net导出Excel显示中文乱码的解决方法
- ASP.NET之Response.Cookies.Remove无法删除COOKIE的原因
- 轻松解决asp.net用户ASPNET登录失败问题的方法分享
- ASP.NET中URLRewrite的具体实现方法
- 在ASP.NET中使用JavaScript脚本的方法
- asp.net验证码图片生成示例
- asp.net自定义控件中注册Javascript问题解决方案
- asp.net更新指定记录的方法
- ASP.NET过滤HTML标签只保留换行与空格的方法
- ASP.NET生成两个日期范围内随机时间的实现方法
- asp.net错误:0x8007000B异常的解决方法