随笔-6  评论-2  文章-0  trackbacks-0
  2010年11月30日
$(window.parent.document).find("#Frm_Main").attr("src","http://www.baidu.com");

 


posted @ 2010-11-30 11:52 L.C. 阅读(368) 评论(0) 编辑
  2010年7月5日

 

以图启文:

▲如上图,用HTML实现静态表格非常简单。但假若表格里的内容包括分级都是不定的,即动态可变的,那么如何实现呢?

 

其实,上图的表格是由树(TreeView)转换而来的,看下面:

 

在SQL数据库里的结构是:

▲前4个字段一看就明白,第5个字段是指当前节点所在这棵树中的层数。

 

一切都由C#.NET来解决

首先前台页面很简单:就只有一个层,并把它指定为服务器控件。这个层的目的就是容纳将要生成的表格头。

 

代码
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title></title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div id="myTable" runat="server"></div>
    
</form>
</body>
</html>

 

 

后台代码来了:

 

 

代码
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Bll;

using Config;
using System.Data;
using System.Data.SqlClient;

namespace wow
{
    
public partial class DrawTable : System.Web.UI.Page
    {
        
        
protected void Page_Load(object sender, EventArgs e)
        {
            
if (!IsPostBack)
            {
                
string SQLstr = "select * from nt_user_constrbook";//SQL查询语句,就是把第三张图中的数据全取出来。
                DataTable nodeDT = getDT(SQLstr);
                
string head_html = drawTable(nodeDT);
                myTable.InnerHtml 
= head_html;
            }
        }

        
public DataTable getDT(string strSQL)
        {
            
string strConn = DBConfig.WOWConString;//数据库链接字符串,按实际情况改动
            SqlDataAdapter da = new SqlDataAdapter(strSQL, strConn);
            DataTable dt 
= new DataTable();
            da.Fill(dt);
            
return dt;
        }

        
/// <summary>
        
/// 画表格
        
/// </summary>
        
/// <param name="nodeDT"></param>
        
/// <returns></returns>
        protected string drawTable(DataTable nodeDT)
        {
            
string strTable = "<table border=\"1\">";
            
string strRow = "";
            
int maxLay = 0;
            
foreach (DataRow max in nodeDT.Rows)
            {
                
if (Convert.ToInt32(max["Layer"].ToString()) > maxLay)
                {
                    maxLay 
= Convert.ToInt32(max["Layer"].ToString());
                }
            }

            
for (int i = 1; i <= maxLay; i++)
            {
                
int colspan = 0;
                
int rowspan = 0;
                strRow 
+= "<tr>";
                DataRow[] drArr 
= nodeDT.Select("Layer='" + i + "'");
                
foreach (DataRow dr in drArr)
                {
                    colspan 
= comCol(dr["id"].ToString(), nodeDT);
                    rowspan 
= comRow(dr["id"].ToString(), nodeDT, i, maxLay + 1);
                    strRow 
+= "<td colspan=\"" + colspan + "\" rowspan=\"" + rowspan + "\">" + dr["bookname"].ToString() + "</td>";
                }
                strRow 
+= "</tr>";
            }
            strTable 
+= strRow;
            strTable 
+= "</table>";
            
return strTable;
        }

        
/// <summary>
        
/// 计算跨行数
        
/// </summary>
        
/// <param name="nodeID"></param>
        
/// <param name="dt"></param>
        
/// <param name="rownum"></param>
        
/// <param name="maxnum"></param>
        
/// <returns></returns>
        protected int comRow(string nodeID, DataTable dt, int rownum, int maxnum)
        {
            
int deep = 0;
            DataRow[] drarr 
= dt.Select("parentid='" + nodeID + "'");

            
if (drarr.Length == 0)
                deep 
= maxnum - rownum;
            
else
                deep 
= 1;
            
return deep;
        }

        
/// <summary>
        
/// 计算跨列数
        
/// </summary>
        
/// <param name="nodeID"></param>
        
/// <param name="dt"></param>
        
/// <returns></returns>
        protected int comCol(string nodeID, DataTable dt)
        {
            
int cols = 0;
            DataRow[] drarr 
= dt.Select("parentid='" + nodeID + "'");
            
foreach (DataRow dr in drarr)
            {
                
if (childcount(dr["id"].ToString(), dt) == 0)//没有子节点
                {
                    cols
++;
                }
                
else
                    cols 
+= comCol(dr["id"].ToString(), dt);//递归。有子节点,加上子节点的个数
            }
            
if (cols == 0)
                
return cols = 1;
            
else
                
return cols;
        }

        
/// <summary>
        
/// 当前节点的子节点个数
        
/// </summary>
        
/// <param name="id"></param>
        
/// <param name="dt"></param>
        
/// <returns></returns>
        protected int childcount(string id, DataTable dt)
        {
            DataRow[] drarr 
= dt.Select("parentid='" + id + "'");
            
return drarr.Length;
        }
    }
}

 

 

 

运行吧!改数据库结构吧,你怎么改,我就跟着你怎么变!

怎么用在GRIDVIEW等控件我就不说了,打字 累!

 

posted @ 2010-07-05 11:17 L.C. 阅读(294) 评论(2) 编辑
  2010年7月2日

 

select ident_current('table_name')

 

 

posted @ 2010-07-02 11:11 L.C. 阅读(82) 评论(0) 编辑

利用正则表达式而已,IE6可用,高版本不一定可用 

1 var obj=<input type="file" />
2 obj.outerHTML = obj.outerHTML.replace(/(value=\").+\"/i, "$1\"");

 

 

posted @ 2010-07-02 10:25 L.C. 阅读(62) 评论(0) 编辑
  2009年5月7日

      SQL原句:

      SELECT sex FROM user    //这样只会显示0或1,(因为一般情况性别在数据库都用1,0记录)

      修改SQL语句:

      SELECT

      CASE    WHEN sex ='1' THEN ''

                  WHEN sex ='2' THEN ''

                  WHEN sex ='0' THEN '不详' END AS sex

      FROM user   

posted @ 2009-05-07 16:58 L.C. 阅读(391) 评论(0) 编辑

for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            CheckBox chk = new CheckBox();
            chk = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");        
            if (chk.Checked == true)
            {
                Label lb=new Label();
                lb = (Label)GridView1.Rows[i].FindControl("label2");
                string isReg = lb.Text.ToString();
                if (isReg =="***")//
                {
                    //
                }
                else
                {

                  //

                }

          }              

posted @ 2009-05-07 16:32 L.C. 阅读(164) 评论(0) 编辑
仅列出标题