日前,小弟去一公司面试,遇到一问题,实在做不出来,十分郁闷,特来此想众高手请教。
首先是,做一个WEBSERVISE,既WEB服务,连接数据库(暂以SQL SERVER2000 的PUBS库的表EMPLOYEE为例),不允许用WEB控件,以格式化输出到WEB页上。小弟考虑很久,打算用TD  TR进行控制,但是始终实现不了,望高手给出一段代码。
然后是日前小弟前去的公司给出的题目:
前提不允许使用WEB控件,连接一数据库,并且在WEB页上以树形结构输出数据库中的数据,就是像我们论坛首页左边的树形类似,需要实现父节点与子节点的可收缩和可扩展功能,然后实现对数据的增,删,改,查,并且在点击节点叶的时候能够连接新的网页,可使用SQL SERVER 和XML作为数据库。
小弟使用过TreeView控件,但是在此是不允许使用控件,所以实在没有办法,据我在网上的查找,有用HTML+CSS+JAVASCRIPT实现WEB页的树形的,小弟还一思路是创建一TreeView类,用FORM.CONTROL(好像拼错了).ADD添加,但是没成功,希望高手来帮助解决下!
因为小弟是经人指点才知道此地高手众多,所以小弟没有多少分,愿意以30乃至更高的分数来感谢帮助小弟的高手。
在ASP.NET中用C#语言来实现。

解决方案 »

  1.   

    第一个问题应该也不允许实例化DataGrid或者DataTable,用Table应该可以,能给个代码段吗?
      

  2.   

    web服务嘛我是不太会的了
    不过那个树形较简单
    用递归函数加ajax就可以搞定的了
      

  3.   

    我这有源代码,递归+HTML+CSS+JAVASCRIPT
      

  4.   

    zhangxunyxq() ,能发一份给我吗?我很需要,多谢
      

  5.   

    试一试,大体思路。
    动态生成页面table
    response.wirte("<table>");
    //如果有表头,可以在这里添加
    while (d.read())
    {
        response.wirte("<tr>");
          response.wirte("<td>");
          //读取的数据
          response.wirte("</td>");
          //循环生成一行
        response.wirte("</tr>");}
    response.wirte("</table>");
      

  6.   

    反正没事做,用xml + xsl写了个例子给你.demo.xml
    <?xml-stylesheet type="text/xsl" href="style.xsl"?>
    <?xml version="1.0" encoding="GB2312"?>
    <table>
        <person>
            <id>1</id>
            <name>人物</name>
            <parent>0</parent>
        </person>
    <person>
            <id>2</id>
            <name>武将</name>
            <parent>1</parent>
        </person>
        <person>
            <id>3</id>
            <name>文臣</name>
            <parent>1</parent>
        </person>
        <person>
            <id>4</id>
            <name>魏延</name>
            <parent>2</parent>
        </person>
        <person>
            <id>5</id>
            <name>赵云</name>
            <parent>2</parent>
        </person>
        <person>
            <id>6</id>
            <name>何平</name>
            <parent>2</parent>
        </person>
        <person>
            <id>7</id>
            <name>荀域</name>
            <parent>3</parent>
        </person>
        <person>
            <id>8</id>
            <name>荀攸</name>
            <parent>3</parent>
        </person>
        <person>
            <id>9</id>
            <name>鲁肃</name>
            <parent>3</parent>
        </person>
        <person>
            <id>10</id>
            <name>赵统</name>
            <parent>5</parent>
        </person>
        <person>
            <id>11</id>
            <name>赵广</name>
            <parent>5</parent>
        </person>
    </table>style.xsl
    <?xml version="1.0" encoding="utf-8"?> 
    <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <html> 
    <xsl:apply-templates select="//person[parent=0]"/> 
    </html> 
    </xsl:template> 
    <xsl:template match="//person"> 
    <xsl:param name="id" select="id"/> 
    <div id="{$id}"  onclick="s{$id}.style.display=='none'?s{$id}.style.display='block':s{$id}.style.display='none'">
    <xsl:choose>
    <xsl:when test="count(//person[parent=$id]) &gt; 0">
    <span style="cursor:hand">+</span>
    </xsl:when>
    <xsl:otherwise>-</xsl:otherwise>
    </xsl:choose><xsl:value-of select="name"/></div> 
    <div id="s{$id}" style="display:none;margin-left:30px;"> 
    <xsl:apply-templates select="//person[parent=$id]"/> 
    </div> 
    </xsl:template> 
    </xsl:transform>用c#生成demo这样的xml格式字串应该很简单吧.当然,你也可以将某些节点当作主节点的属性值来处理文档.
      

  7.   

    你也可以直接利用stringbuilder生成html串或用response.write直接输出html而不利用xml和xsl.
      

  8.   

    树型:我做过,还有源代码(vb.net)
    见我的第一篇blog
    http://xucanzhao.cnblogs.com/
      

  9.   

    http://www.cnblogs.com/xucanzhao/archive/2005/09/01/228012.html
      

  10.   

    WebService返回DataTable, WebService的client端获得DataTable(对象比如叫dt)后, 
    用for语句来写html啊~
    StringBuilder sb = new StringBuilder();
    sb.Append("<table>");
    for(int i=0; i<dt.Rows.Count; i++){
      sb.Append("<tr>");
      for(int j=0; j<dt.Columns.Count; j++){
        sb.Append("<td> "+dt.Rows[i][j].ToString()+" </td>");
      }
      sb.Append("</tr>");
    }
    sb.Append("</table>");
    就这样, 最简单的HTML table就出来啦
      

  11.   

    递归+HTML+CSS+JAVASCRIPT,我们这都是这么做的,复制过来修改下
      

  12.   

    将xsl文件再改进一下,当节点展开后,前面变为-,合上时变为+.<?xml version="1.0" encoding="utf-8"?> 
    <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/"> 
    <html> 
    <xsl:apply-templates select="//person[parent=0]"/> 
    </html> 
    </xsl:template> 
    <xsl:template match="//person"> 
    <xsl:param name="id" select="id"/> 
    <div id="{$id}"  onclick="s{$id}.style.display=='none'?s{$id}.style.display='block':s{$id}.style.display='none'">
    <xsl:choose>
    <xsl:when test="count(//person[parent=$id]) &gt; 0">
    <span style="cursor:hand" onclick="this.innerHTML=='+'?this.innerHTML='-':this.innerHTML='+';">+</span>
    </xsl:when>
    <xsl:otherwise>-</xsl:otherwise>
    </xsl:choose><xsl:value-of select="name"/></div> 
    <div id="s{$id}" style="display:none;margin-left:30px;"> 
    <xsl:apply-templates select="//person[parent=$id]"/> 
    </div> 
    </xsl:template> 
    </xsl:transform>
      

  13.   

    <span style="cursor:hand" onclick="this.innerHTML=(this.innerHTML=='+'?'-':'+');">+</span>
      

  14.   

    这个做web开发不至于html都不会吧?
      

  15.   

    http://www.eimhe.com/bbs/adget.php?id=379765美河学习在线——专业视频课程下载基地
      

  16.   

    Qim(莫名) ( ) 信誉的方法应该能行的