• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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自定义列名的方法
    上一篇:DataTable多列合并问题轻松搞定
    下一篇:Asp.net防重复提交机制实现方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

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