为什么VS.NET里绘制表格只能用表格生成器生成,不能手画呢,还有只能同一行合并单元格,同一列则不行?请指教,可能是我不会用

解决方案 »

  1.   

    自己手写代码来罗。。因为VS。NET这个设计器支持还是很烂。建议你用DW设计好页面后在到VS。NET处理
      

  2.   

    直接在VS.NET弄比较复杂的表格是不大方便的,可以先在其它工具里弄好框架,再到vs.net里加程序就好了
      

  3.   

    VS.NET设计器对表格的支持很有限。 同一列合并单元格,你可以在html视图中对要合并的垂直对齐的几个单元格的最上一个<td>中加入rowspan="X"属性,X为要合并的单元格数量。
      

  4.   

    VS2003在排版方面是比较差的,可以用dreamweaver替代,2005就没这些问题了。
    或者可以用2003的html控件里table控件,不过生成的时候是三行三列的,你删掉一些行和列就行了。
      

  5.   

    1.Html
    <html>
    <head>
     评论表格统计
    </head><body><table border=0 width=100%>
     <TR>
        <td>   
           <TR>
              <TD aligh="center">姓名</TD> <TD aligh="center">总量</TD> 
                     <TD aligh="center">专案名称</TD> <TD aligh="center">评论</TD> 
                     <TD aligh="center">总评论</TD> <TD aligh="center">角色</TD>
           </TR>       <TR>
              <TD>
          <TR>
                     <TD rowspan=4 aligh="center" color="blue"><font color='blue'>SuSuan</font></TD> 
                     <TD rowspan=4 aligh="center" bgcolor="lightgreen">100个</TD>
                     <TD>                    
                        <TR vlign="top">
                           <TD aligh="center" bgcolor="lightblue">IWP专案</TD>
                           <TD aligh="center" bgcolor="lightblue">20</TD>
                           <TD aligh="center" bgcolor="lightblue">60</TD>
                           <TD aligh="center" bgcolor="lightblue">负责人</TD>
                        </TR>
                        <TR >
                           <TD aligh="center" bgcolor="lightblue">BKD专案</TD>
                           <TD aligh="center" bgcolor="lightblue">30</TD>
                           <TD aligh="center" bgcolor="lightblue">40</TD>
                           <TD aligh="center" bgcolor="lightblue">协助人</TD>
                        </TR>  
                        <TR >
                           <TD aligh="center" bgcolor="lightblue">BKD专案</TD>
                           <TD aligh="center" bgcolor="lightblue">30</TD>
                           <TD aligh="center" bgcolor="lightblue">40</TD>
                           <TD aligh="center" bgcolor="lightblue">协助人</TD>
                        </TR>                                     
                      </TD>
                  </TR>       <TR>
                     <TD rowspan=4 aligh="center" bgcolor="lightgreen">CEO</TD> 
                     <TD rowspan=4 aligh="center" bgcolor="lightgreen">80个</TD>
                     <TD>                    
                        <TR vlign="top">
                           <TD aligh="center" bgcolor="lightblue">IIS专案</TD>
                           <TD aligh="center" bgcolor="lightblue">30</TD>
                           <TD aligh="center" bgcolor="lightblue">20</TD>
                           <TD aligh="center" bgcolor="lightblue">负责人</TD>
                        </TR>
                        <TR >
                           <TD aligh="center" bgcolor="lightblue">KDB专案</TD>
                           <TD aligh="center" bgcolor="lightblue">50</TD>
                           <TD aligh="center" bgcolor="lightblue">20</TD>
                           <TD aligh="center" bgcolor="lightblue">协助人</TD>
                        </TR>  
                        <TR >
                           <TD aligh="center" bgcolor="lightblue">BKD专案</TD>
                           <TD aligh="center" bgcolor="lightblue">30</TD>
                           <TD aligh="center" bgcolor="lightblue">40</TD>
                           <TD aligh="center" bgcolor="lightblue">协助人</TD>
                        </TR>                                     
                      </TD>
                  </TR>
              </TD>
            </TR>    
                           
        </td>
     </TR>
    </table></body></html>
      

  6.   

    2 *.C文件中写法
    //存放最终结果字符串
    string strHtmlStr;            
                
    //存放表格头字符串
    System.Text.StringBuilder stbHead = new System.Text.StringBuilder();
    stbHead.Append("<table border=1 width=100%  class=\"Table\">")
       .Append("       <TR>")
       .Append("          <TD align=\"center\" class=\"HeaderStyle\">姓名</TD>")
       .Append("          <TD align=\"center\" class=\"HeaderStyle\">个人评论总量</TD>")
       .Append("          <TD align=\"center\" class=\"HeaderStyle\">专案名称</TD> <TD align=\"center\" class=\"HeaderStyle\">个人评论数量</TD> ")
       .Append("          <TD align=\"center\" class=\"HeaderStyle\">评论总量</TD> <TD align=\"center\" class=\"HeaderStyle\">角色</TD>")
       .Append("       </TR>");

    strHtmlStr = stbHead.ToString();     //将头追加

    //存放表格中间n行数据字符串
    System.Text.StringBuilder stbBody = new System.Text.StringBuilder();

    for(int i = 0; i < ds.Tables.Count; i++)
    {
    if(this.ddlDisplayNum.SelectedValue != "")
    {
    if(i >= int.Parse(this.ddlDisplayNum.SelectedValue))
    {
    break;
    }
    }
    string intDetailNum = (ds.Tables[i].Rows.Count).ToString();  //格式化表格用
    stbBody.Append("           <TR>")
       .Append("               <TD rowspan="+intDetailNum+" align=\"center\"   class=\"TableTitle\">"                                 
                                        + "<a onclick=window.open('"+this.XframeSysInfo.SysRoot + this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPSCommentRead&ReportName=CommentStatDetail&StaffNo="+ds.Tables[i].Rows[0]["StaffNo"].ToString() + "&StartTime=" + strStartTime +"&EndTime="+strEndTime+"','popuppage','width=800,height=600,top=60,left=100,scrollbars,resizable')  style='CURSOR: hand'>"+ds.Tables[i].Rows[0]["FullName"].ToString()+"</a>"+
                                                  "</TD> ");                //姓名
    try
    {
    if(ds.Tables[i].Rows[0]["OneToAllProjNum"].ToString().Trim() == "0")  ////如果为零时不加链接
    {
    stbBody.Append("           <TD rowspan="+intDetailNum+" align=\"right\" class=\"TableContent\">0</TD>");                
    }
    else
    {
    stbBody.Append("           <TD rowspan="+intDetailNum+" align=\"right\" class=\"TableContent\">"                             
    + "<a onclick=window.open('"+this.XframeSysInfo.SysRoot + this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPSCommentRead&ReportName=CommentStatDetail&StaffNo="+ds.Tables[i].Rows[0]["StaffNo"].ToString() + "&StartTime=" + strStartTime +"&EndTime="+strEndTime+"','popuppage','width=800,height=600,top=60,left=100,scrollbars,resizable')  style='CURSOR: hand'>"+ds.Tables[i].Rows[0]["OneToAllProjNum"].ToString()+"</a>"+
    "</TD>");                
    }
    }
    catch
    {
    //stbBody.Append("        <TD rowspan="+intDetailNum+" align=\"center\" class=\"TableContent\">"+"0"+"</TD>");  
    }
               
    stbBody.Append("               <TD align=\"center\" class=\"TableContent\">" +"<a href="+this.XframeSysInfo.SysRoot+ this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPreSell&Func=ReadProject&ProjNo="+ds.Tables[i].Rows[0]["ProjNo"].ToString()+" target=\"_blank\">"+ds.Tables[i].Rows[0]["ProjName"].ToString()+        "</TD>");  
    if(ds.Tables[i].Rows[0]["OneToOneProjNum"].ToString().Trim() == "0")    
    {
    stbBody.Append("               <TD align=\"right\" class=\"TableContent\">0</TD>");
    }
    else
    {
    stbBody.Append("               <TD align=\"right\" class=\"TableContent\">"
    + "<a onclick=window.open('"+this.XframeSysInfo.SysRoot + this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPSCommentRead&ReportName=CommentStatDetail&StaffNo="+ds.Tables[i].Rows[0]["StaffNo"].ToString()+"&ProjNo="+ds.Tables[i].Rows[0]["ProjNo"].ToString() + "&StartTime=" + strStartTime +"&EndTime="+strEndTime+"','popuppage','width=800,height=600,top=60,left=100,scrollbars,resizable')  style='CURSOR: hand'>"+ds.Tables[i].Rows[0]["OneToOneProjNum"].ToString()+"</a>"+
    "</TD>");           
    }

    if(ds.Tables[i].Rows[0]["MansToOneProjNum"].ToString().Trim() == "0")
    {
    stbBody.Append("               <TD align=\"right\" class=\"TableContent\">0</TD>");          
    }
    else
    {
    stbBody.Append("               <TD align=\"right\" class=\"TableContent\">" 
    + "<a onclick=window.open('"+this.XframeSysInfo.SysRoot + this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPSCommentRead&ReportName=CommentStatDetail&ProjNo="+ds.Tables[i].Rows[0]["ProjNo"].ToString() + "&StartTime=" + strStartTime +"&EndTime="+strEndTime+"','popuppage','width=800,height=600,top=60,left=100,scrollbars,resizable')  style='CURSOR: hand'>"+ds.Tables[i].Rows[0]["MansToOneProjNum"].ToString()+"</a>"+
    "</TD>");          
    }
    stbBody.Append("               <TD align=\"center\" class=\"TableContent\">" + (ds.Tables[i].Rows[0]["UserStyle"].ToString().Trim() == "1" ? "<font color='blue'>11</font>" : "22") +"</TD>")  //角色
          .Append("           </TR>");
    for(int j = 1; j < ds.Tables[i].Rows.Count; j++)
    {
    stbBody.Append("  <TR>")
    .Append("          <TD align=\"center\" class=\"TableContent\">" +"<a href="+this.XframeSysInfo.SysRoot+ this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPreSell&Func=ReadProject&ProjNo="+ds.Tables[i].Rows[j]["ProjNo"].ToString()+" target=\"_blank\">"+ds.Tables[i].Rows[j]["ProjName"].ToString()+        "</TD>");  //专案名称

    if(ds.Tables[i].Rows[j]["OneToOneProjNum"].ToString().Trim() == "0") 
    stbBody.Append("          <TD align=\"right\" class=\"TableContent\">0</TD>");           
    }
    else
    {
    stbBody.Append("          <TD align=\"right\" class=\"TableContent\">"                                 
    + "<a onclick=window.open('"+this.XframeSysInfo.SysRoot + this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPSCommentRead&ReportName=CommentStatDetail&StaffNo="+ds.Tables[i].Rows[j]["StaffNo"].ToString()+"&ProjNo="+ds.Tables[i].Rows[j]["ProjNo"].ToString() + "&StartTime=" + strStartTime +"&EndTime="+strEndTime+"','popuppage','width=800,height=600,top=60,left=100,scrollbars,resizable')  style='CURSOR: hand'>"+ds.Tables[i].Rows[j]["OneToOneProjNum"].ToString()+"</a>"+
    "</TD>");           
    }

    if(ds.Tables[i].Rows[j]["MansToOneProjNum"].ToString().Trim() == "0")  
    {
    stbBody.Append("          <TD align=\"right\" class=\"TableContent\">0</TD>");
    }
    else
    {
    stbBody.Append("          <TD align=\"right\" class=\"TableContent\">" 
                             + "<a onclick=window.open('"+this.XframeSysInfo.SysRoot + this.XframeSysInfo.MainPage.Name+"?ModuleID=CRMPSCommentRead&ReportName=CommentStatDetail&ProjNo="+ds.Tables[i].Rows[j]["ProjNo"].ToString() + "&StartTime=" + strStartTime +"&EndTime="+strEndTime+"','popuppage','width=800,height=600,top=60,left=100,scrollbars,resizable')  style='CURSOR: hand'>"+ds.Tables[i].Rows[j]["MansToOneProjNum"].ToString()+"</a>"+
                      "</TD>");          
    }

    stbBody.Append("          <TD align=\"center\" class=\"TableContent\">" + (ds.Tables[i].Rows[j]["UserStyle"].ToString().Trim() == "1" ? "<font color='blue'>111</font>" : "222") +"</TD>")  
    .Append("     </TR>");   
    }                  
    }
    strHtmlStr += stbBody.ToString();
    //存放表格尾字符串
    System.Text.StringBuilder stbTail = new System.Text.StringBuilder();
    stbTail.Append("</TABLE>");   
    strHtmlStr += stbTail;
      

  7.   

    ChengKing:
    Sorry,弄错了
    纠正: 1.html
    应该为:<table border=1>
    <tr><td>asdfasdf</td><td>aaaaa</td><td>bbbbb</td></tr>
    <tr><td>asdfasdf</td><td>ccccc</td><td>ddddd</td></tr>
    <tr><td>asdfasdf</td><td>eeeee</td><td>fffff</td></tr>
    <tr><td>asdfasdf</td><td>ggggg</td><td>hhhhh</td></tr>
    <tr><td>asdfasdf</td><td>iiiii</td><td>jjjjj</td></tr>
    <tr>
               <td rowspan=3>kkkkk</td>
               <td rowspan=3>lllll</td>
               <td>mmmm1</td>           
            </tr>       
            <tr><td>mmmm2</td></tr>
    <tr><td>mmmm3</td></tr>
    </table>
      

  8.   

    我的经验是:先用表格生成器生成表格,之后在修改HTML内容即可!