一个页面搞定几乎所有的列表需求的实现思路和一点代码。

 

     前情回顾 分页控件的使用能不能再简单一点呢,能不能一个页面搞定所有的列表需求?

 

     其实如果要单独实现一个能够显示数据的表格,那么是很简单的,写一个for循环,把DataTable里面数据循环出来就OK了。相信大家都会做吧,如果是从asp走过来的应该更不陌生吧。

     上一篇说了,我们要根据表里面的记录来确定显示哪些列,哪一列在前,哪一列在后。那么怎么做呢?我们先定义一个类来存放这些信息。

 

 public class GridColumnsInfo
    {
        public int ColumnID = 0;
      public string ColSysName = "";
        public string ColName = "";
        public string ColType = "";
        public string ColWidth = "";
        public string ColAlign = "";
        public string Format = "";
        public int MaxLength = 0;

    }

 

     然后我们继承 System.Web.UI.WebControls.DataBoundControl,来创建一个自己的显示数据的控件。GridView就是继承的这个基类,我们也先照猫画虎来一个吧。public class myGrid : DataBoundControl    {}

 

     DataBoundControl 已经为我们做了不少的事情,比如定义了DataSource属性,还有DataBind()事件,其他的属性、事件我们暂时用不到,就先不管了。DataSource直接用就可以了,不用修改;而DataBind()就需要override一下了。

 

     我们还要先定义一个 Dictionary,用于存放GridColumnsInfo集合。然后写一个public void LoadGridColumnsInfo()函数来加载信息。

 public Dictionary<int, GridColumnsInfo> dic_GridCols ;

 

DataBind() 里面主要分为两个部分,第一部分绘制页眉,第二部分就是循环数据了。

 #region 输出页眉
            str.Append("<TR class=\"css_GridTR\">");
           
            foreach (KeyValuePair<int, GridColumnsInfo> entry in dic_GridCols)
            {
                str.Append("<TD>");
                str.Append(((GridColumnsInfo)entry.Value).ColName);
                str.Append("</TD>");
            }
            str.Append("</TR>");
            #endregion


     然后是循环输出数据,感觉这些也没有什么好说的,自己都觉得挺苦燥的。还是说一下行交替颜色的实现方法吧。用控件的形式输出一个table,首先要处理的就是样式,表格的样式要足够的灵活,否则的话就会有不好用的感觉。GridView用了很多的属性来进行描述,这个太复杂了,不和人家学了,来个简单一点的吧。样式/CSS,恩,就交给CSS来处理吧,定义几个css:

 

css_Grid1 :描绘table,
css_GridTR:描绘页眉,
td:控制td,
css_TR_c1、css_TR_c2、css_TR_c3...css_TR_cn: 来定义行交替色,这个数量就看要用多少种颜色来进行

交替了。

css_TR_move :鼠标经过时的样式;
css_TR_CK: 鼠标单击杭的样式。

 

     最后就是写几个js函数来控制鼠标经过和单击的效果。

     这里有演示效果。http://www.cnblogs.com/jyk/archive/2008/07/28/1255077.html

 

     好像有点乱。这里主要是想说如何根据配置信息来显示table,但是好像变成了介绍如何实现行的交替变色和点击行变色了。

 

     在下面就要做表单控件了。整理成一个完整一点的示例,在提供源码吧。

 

附源码:

 

一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。/**//// <summary>
一个页面搞定几乎所有的列表需求的实现思路和一点代码。    
/// 专门显示数据的控件
一个页面搞定几乎所有的列表需求的实现思路和一点代码。    
/// </summary>

一个页面搞定几乎所有的列表需求的实现思路和一点代码。    [DefaultProperty("Text")]
一个页面搞定几乎所有的列表需求的实现思路和一点代码。    [ToolboxData(
"<{0}:myGrid runat=server></{0}:myGrid>")]
一个页面搞定几乎所有的列表需求的实现思路和一点代码。    
public class myGrid : DataBoundControl 
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。    
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
==============================句柄==============================#region ==============================句柄==============================
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/**//// <summary>
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// 访问数据库用的实例
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// </summary>

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        private DataAccessHelp dal = null;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
数据访问实例的设置#region 数据访问实例的设置
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/**//// <summary>
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// 设置数据访问层的实例
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// </summary>

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        public DataAccessHelp DAL
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
set 一个页面搞定几乎所有的列表需求的实现思路和一点代码。{ dal = value; }
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
get
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
if (dal == null)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    dal 
= new DataAccessHelp();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
return dal;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
成员和属性#region 成员和属性
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
模块ID#region 模块ID
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/**//// <summary>
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// 模块ID
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// </summary>

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        private string _FunctionID = "";
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/**//// <summary>
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// 模块ID
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// </summary>

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        [Bindable(true)]
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        [Category(
"配置信息")]
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        [Localizable(
true)]
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        [Description(
"模块ID,用于提取配置信息")]
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
public string FunctionID
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
set 一个页面搞定几乎所有的列表需求的实现思路和一点代码。{ _FunctionID = value; }
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
get
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
return _FunctionID;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/**//// <summary>
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// 存放列表用的字段的描述信息,key:字段ID,value:GridColumnsInfo
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// </summary>

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        public Dictionary<int, GridColumnsInfo> dic_GridCols ;//= new Dictionary<int, GridColumnsInfo>();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。

一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
从数据库的配置信息里面提取列表用的字段信息#region 从数据库的配置信息里面提取列表用的字段信息
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/**//// <summary>
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// 从数据库的配置信息里面提取列表用的字段信息
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// </summary>

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        public void LoadGridColumnsInfo()
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
string sql = "select * from _V_Use_ListCol where FunctionID=" + FunctionID;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            DataTable dt 
= DAL.RunSqlDataTable(sql);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
if (dal.ErrorMsg.Length > 2)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
return;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
if (dt.Rows.Count == 0)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
return;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            dic_GridCols 
= new Dictionary<int, GridColumnsInfo>();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
foreach (DataRow dr in dt.Rows)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                GridColumnsInfo info 
= new GridColumnsInfo();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                info.ColumnID  
= Int32.Parse(dr["ColumnID"].ToString());
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                info.ColSysName  
= dr["ColSysName"].ToString();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                info.ColName  
= dr["ColName"].ToString();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                info.ColWidth  
= dr["ColWidth"].ToString();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                info.ColAlign 
= dr["ColAlign"].ToString();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                info.ColType  
= dr["ColType"].ToString();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                info.Format 
= dr["Format"].ToString();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                info.MaxLength 
= Int32.Parse(dr["MaxLength"].ToString());
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                dic_GridCols.Add(info.ColumnID, info);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
//dal.Dispose();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
        }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/**//// <summary>
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// 绑定数据
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
/// </summary>

一个页面搞定几乎所有的列表需求的实现思路和一点代码。        public override void DataBind()
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。        
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
if ((base.Site != null&& base.Site.DesignMode)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
//设计模式,退出
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                return;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
加载配置信息#region 加载配置信息
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
if (dic_GridCols == null)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                LoadGridColumnsInfo();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
//没有配置信息,退出
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
            if (dic_GridCols == null)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                CommandClass.MsgBox(
"没有设置配置信息"true);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
return;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            System.Text.StringBuilder str 
= new StringBuilder(1000);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            str.Append(
"<Table class=\"css_Grid\">");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                   
一个页面搞定几乎所有的列表需求的实现思路和一点代码。 
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
输出页眉#region 输出页眉
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            str.Append(
"<TR class=\"css_GridTR\">");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
foreach (KeyValuePair<int, GridColumnsInfo> entry in dic_GridCols)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                str.Append(
"<TD>");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                str.Append(((GridColumnsInfo)entry.Value).ColName);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                str.Append(
"</TD>");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。            str.Append(
"</TR>");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
输出数据#region 输出数据
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
if (this.DataSource != null)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
//输出js脚本
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                System.Text.StringBuilder js = new StringBuilder();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                js.Append(
"<script >var myGridDataID = \"\"</script>");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
base.Page.Response.Write(js.ToString());
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
if (this.DataSource is DataTable)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    DataTable dt 
= (DataTable)this.DataSource;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。           
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    Int32 i 
= 0;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    GridColumnsInfo info;   
//循环里面的字段信息
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                    string tmpValue;        //循环里的字段值
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                    string DataID = "";     //数据主键值
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                    string IDColumn = "";   //主键的字段名
一个页面搞定几乎所有的列表需求的实现思路和一点代码。

一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    
主键的字段名#region 主键的字段名
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    IDColumn 
= dal.RunSqlGetFirstColValue("select IDColumn from Manage_Function_Info where FunctionID= "+ this.FunctionID);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    
定义交替次数#region 定义交替次数
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    
int t = 0;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    
foreach (DataRow dr in dt.Rows)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        
//获取主键字段的值
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                        DataID = dr[IDColumn].ToString();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        str.Append(
"<TR class=\"css_TR_c");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                        str.Append(t % 2 + 1); t++;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        str.Append(
"\" onmousemove=\"Move(this)\" onmouseout=\"Out(this)\" onclick=\"Ck(this,'");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        str.Append(DataID);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        str.Append(
"')\" ondblclick=\"DbCK(me)\">");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。

一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        
foreach (KeyValuePair<int, GridColumnsInfo> entry in dic_GridCols)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            info 
= (GridColumnsInfo)entry.Value;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            str.Append(
"<TD ");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
align#region align
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
if (info.ColAlign != "left")
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                str.Append(
"Align=\"");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                                str.Append(info.ColAlign);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                str.Append(
"\" ");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
width#region width
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
if (info.ColWidth != "0")
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                str.Append(
"width=\"");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                                str.Append(info.ColWidth);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                str.Append(
"\" ");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            str.Append(
">");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
设置数据的长度和格式#region 设置数据的长度和格式
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            tmpValue 
= dr[info.ColSysName].ToString();
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
if (info.MaxLength != 0)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                tmpValue 
= Functions.strCal(tmpValue, info.MaxLength);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
if (info.Format.Length != 0)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                
//判断数据库的字段类型,然后先转换再格式化。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                                switch (info.ColType)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "bigint":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        tmpValue 
= string.Format(info.Format, Int64.Parse(tmpValue));
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        
break;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "int":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "smallint":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "tinyint":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        tmpValue 
= string.Format(info.Format, Int32.Parse(tmpValue));
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        
break;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "datetime":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "smalldatetime":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        
if (tmpValue.Length > 0)
一个页面搞定几乎所有的列表需求的实现思路和一点代码。一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        
一个页面搞定几乎所有的列表需求的实现思路和一点代码。{
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                            DateTime tmpTime 
= DateTime.Parse(tmpValue);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                            
if (tmpTime <= DateTime.Parse("1900-1-2"))
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                                tmpValue 
= "";  //不显示1900-1-1这样的日期
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                                            else
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                                tmpValue 
= string.Format(info.Format, tmpTime);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        
break;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "decimal":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "money":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "smallmoney":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "numeric":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        tmpValue 
= string.Format(info.Format, decimal.Parse(tmpValue));
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        
break;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "float":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                    
case "real":
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        tmpValue 
= string.Format(info.Format, float.Parse(tmpValue));
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        
break;
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                                        
//其他类型不格式化
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
                                }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            str.Append(tmpValue);
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                            str.Append(
"</TD>"); 
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。                        str.Append(
"</TR>");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。                    }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。                }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。            }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
#endregion

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            str.Append(
"</Table>");
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。            
this.Controls.Add(new LiteralControl(str.ToString()));
一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。        }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
一个页面搞定几乎所有的列表需求的实现思路和一点代码。    }

一个页面搞定几乎所有的列表需求的实现思路和一点代码。
上一篇:到底什么是“区块链”?


下一篇:互联网欺诈花样百出,人工智能如何加强金融风控体系?