小弟刚接触ASP.NET不久,有些问题想弄明白,多谢大家指教.
1、DataSet中,如果我不想用控件(如:DataGrid)来显示DataSet中的数据,就在<table></table>中显示,应该怎样做?2、ASP.NET中怎样知道有没有记录的?例如,如果在ASP中,set rs=conn.execute(sql),根据rs.eof可以判断rs是否为空,那ASP.NET中根据什么来判断呢?谢谢!!

解决方案 »

  1.   

    1.可以根据得到的DataSet的特点,使用循环,将结果显示在HtmlTable中

    2 .很多方法,如DataReader.Reader(),DataTable.Rows.Count()...
      

  2.   

    1.参考;
      //存放最终结果字符串
    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++)
    {

    string intDetailNum = (ds.Tables[i].Rows.Count).ToString();  //格式化表格用
    stbBody.Append("           <TR>")
       .Append("               <TD rowspan="+intDetailNum+" align=\"center\"   class=\"TableTitle\">";                  

    //存放表格尾字符串
    System.Text.StringBuilder stbTail = new System.Text.StringBuilder();
    stbTail.Append("</TABLE>");   
    strHtmlStr += stbTail;2.要根据rs对象类型判断,如果rs是DataSet,则:rs.Table[0].Rows.Count = 0;表示无数据.
      

  3.   

    //cs代码------------------
    public static string ConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];

    protected string fixedHeader()
    {
    SqlDataAdapter sda =new SqlDataAdapter(sql,ConnectionString);
    DataSet ds=new DataSet();
    sda.Fill(ds);
    if(ds.Tables[0].Rows.Count>0)//有数据
    {
    string str=@"<table width="+"\""+"100%"+"\"" +"border="+"\""+"1"+"\""+" cellspacing="+"\""+"0"+"\""+" style="+"\""+"MARGIN-TOP:-2px"+"\""+">";
    str+="<TR class="+"\""+"fixedHeaderTr"+"\""+" style="+"\""+"BACKGROUND:navy;COLOR:white"+"\""+">";
    str+="<TD nowrap>Header A</TD>";
    str+="<TD nowrap>Header B</TD>";
    str+="<TD nowrap>Header C</TD>";
    str+="</TR>";
    for(int m=0;m<ds.Tables[0].Rows.Count;m++)
    {
    str+="<TR>";
    str+="<TD>A"+ds.Tables[0].Rows[m]["a"]+"</TD>";
    str+="<TD>B"+ds.Tables[0].Rows[m]["b"]+"</TD>";
    str+="<TD>C"+ds.Tables[0].Rows[m]["c"]+"</TD>";
    str+="</TR>";
    }            
    str+="</table>";
    }
    return str;
    }
    //----------html代码
    <HTML>
        <HEAD>
            <title></title>
            <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
            <style> .fixedHeaderTr {}{ position:relative; top:expression(this.offsetParent.scrollTop); }
        ; .mainDiv {}{ overflow:auto; scrollbar-face-color:9999ff; height:expression((document.body.clientHeight-this.offsetTop-20>this.children[0].offsetHeight)?(this.children[0].offsetHeight+20) : (document.body.clientHeight-this.offsetTop-20)); width:expression(document.body.clientWidth-20); }
            </style>
        </HEAD>
        <body>
            <br>
            <div class="mainDiv">
                <%=fixedHeader()%>
            </div>
        </body>
    </HTML>
      

  4.   

    第一个问题我还是不明白,如果我用DataAdapter对像来做,可以这样显示:
    Response.Write("<table>");
    Response.Write("<tr><td>");
    Response.Write(da["字段名"].ToString());
    Response.Write("</td></tr>");
    Response.Write("</table>");
    那DataSet有没有这样的属性或方法了?
      

  5.   

    response.write 是可以实现的~ 原来跟asp一样~
      

  6.   

    解决了,谢谢大家,这样子的ds.Tables[0].Rows[m]["a"].