建议使用DataList
编辑其模板列
然后在ItemCreate事件中写代码,显示数据

解决方案 »

  1.   

    用下面的好玩一点:
    //用asp.net画饼图(可用于各种投票程序)
    //和asp相比asp.net拥有更强大的功能,使用gdi+可以轻易实现以前很多不能办到的图形功能。
    //首先在c:\中建库mess.mdb,并建表title.
    //建二个字段,title(char型),point(int型)
    //非常满意 281
    //比较满意 297
    //还凑合 166
    //不满意 416
    //我还写了画折线图和条形图的部分,目前正在把它们全部写进一个类中。需要的可以和我联系:mailto:[email protected]
    <%@ Page Language="C#" %>
    <%@import namespace="System.Data"%>
    <%@import namespace="System.Data.OleDb"%>
    <%@import namespace="System.Drawing"%>
    <%@import namespace="System.Drawing.Imaging"%>
    <script language="c#" runat="server">
    public void page_load(Object obj,EventArgs e)
    {
    //把连接字串指定为一个常量
    const String strconn = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
    "Data Source=c:\\mess.mdb";
    OleDbConnection conn=new OleDbConnection(strconn);
    conn.Open();
    string sql="select * from title";
    OleDbCommand cmd=new OleDbCommand(sql,conn);
    DataSet ds=new DataSet();
    OleDbDataAdapter adapter1=new OleDbDataAdapter(cmd);
    adapter1.Fill(ds);
    conn.Close();
    float total=0.0f,tmp;
    int iloop; 
    for(iloop=0;iloop<ds.Tables[0].Rows.Count;iloop++)
    {
    tmp=Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]);//转换成单精度,投票不可能投半票。也可写成Convert.ToInt32
    total+=tmp;
    }
    //Response.Write(Convert.ToString(total)); 
    Font fontlegend=new Font("verdana",9),fonttitle=new Font("verdana",10,FontStyle.Bold);//设置字体
    //fonttitle为主标题的字体
    int width=230;//白色背景宽
    const int bufferspace=15;
    int legendheight=fontlegend.Height*(ds.Tables[0].Rows.Count+1)+bufferspace;
    int titleheight = fonttitle.Height + bufferspace;
    int height = width + legendheight + titleheight + bufferspace;//白色背景高
    int pieheight = width;
    Rectangle pierect=new Rectangle(0,titleheight,width,pieheight);
    //加上各种随机色
    ArrayList colors = new ArrayList();
    Random rnd = new Random();
    for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
    colors.Add(new SolidBrush(Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255))));
    Bitmap objbitmap=new Bitmap(width,height);//创建一个bitmap实例
    //Bitmap objbitmap=new Bitmap(230,500);//创建一个bitmap实例
    Graphics objgraphics=Graphics.FromImage(objbitmap);
    objgraphics.FillRectangle(new SolidBrush(Color.White), 0, 0, width, height);//画一个白色背景
    objgraphics.FillRectangle(new SolidBrush(Color.LightYellow), pierect);//画一个亮黄色背景
    //以下为画饼图(有几行row画几个)
    float currentdegree=0.0f;
    for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
    {
    objgraphics.FillPie((SolidBrush) colors[iloop], pierect, currentdegree,
    Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]) / total * 360);
    currentdegree += Convert.ToSingle(ds.Tables[0].Rows[iloop]["point"]) / total * 360;
    }
    //---以下为生成主标题
    SolidBrush blackbrush=new SolidBrush(Color.Black);
    string title="本次《程序员大本营》推出了配套的专刊,您对专刊满意吗?";
    StringFormat stringFormat = new StringFormat();
    stringFormat.Alignment = StringAlignment.Center;
    stringFormat.LineAlignment = StringAlignment.Center;
    objgraphics.DrawString(title, fonttitle, blackbrush, 
    new Rectangle(0, 0, width, titleheight), stringFormat);
    //列出各字段与得票数
    objgraphics.DrawRectangle(new Pen(Color.Black, 2), 0, height - legendheight, width, legendheight);
    for (iloop = 0; iloop < ds.Tables[0].Rows.Count; iloop++)
    {
    objgraphics.FillRectangle((SolidBrush) colors[iloop], 5, height - legendheight + fontlegend.Height * iloop + 5, 10, 10);
    objgraphics.DrawString(((String) ds.Tables[0].Rows[iloop]["title"]) + " - " + Convert.ToString(ds.Tables[0].Rows[iloop]["point"]), fontlegend, blackbrush, 
    20, height - legendheight + fontlegend.Height * iloop + 1);
    }
    //
    objgraphics.DrawString("总票数是:"+Convert.ToString(total),fontlegend,blackbrush, 5, height - fontlegend.Height );
    //图像总的高度-一行字体的高度,即是最底行的一行字体高度(height - fontlegend.Height )
    Response.ContentType="image/jpeg";
    objbitmap.Save(Response.OutputStream,ImageFormat.Jpeg);
    //objbitmap.Save("myyyyyyyyyyy.jpg", ImageFormat.Jpeg);//输出到文件
    objgraphics.Dispose();
    objbitmap.Dispose();
    }
    </script>
      

  2.   

    如果还是想用把一张图片的width*100,然后后按比率显示投票的结果,可以参考下面:
    SPVote是一个Span。MyDataBase view=new MyDataBase();
    view.SqlString="select * from tb_vt where l_fb=1";
    int QestionCount=view.GetDataSet.Tables[0].Rows.Count;
    for(int j=0;j<QestionCount;j++)
    {
    SPVote.InnerHtml+="<tr><TD colspan=\"3\" align=\"middle\">";
    SPVote.InnerHtml+="<font face=\"幼圆\" size=\"5\" color=\"#FF9933\"><b>网上调查结果查看</b></font>";
    SPVote.InnerHtml+="</td></tr>";
    //
    SPVote.InnerHtml+="<tr><TD colspan=\"3\" align=\"middle\">";
    SPVote.InnerHtml+=view.GetDataSet.Tables[0].Rows[j]["ch_title"].ToString();
    SPVote.InnerHtml+="</td></tr>";
    int count=0;
    MyDataBase MyAns=new MyDataBase();
    MyAns.SqlString="select * from vote where v_id="+view.GetDataSet.Tables[0].Rows[j]["v_id"].ToString();
    for(int i=0;i<MyAns.GetDataSet.Tables[0].Rows.Count;i++)
    {
    count=count+Convert.ToInt32(MyAns.GetDataSet.Tables[0].Rows[i]["c_num"].ToString());
    }
    for(int i=0;i<MyAns.GetDataSet.Tables[0].Rows.Count;i++)
    {
    SPVote.InnerHtml+="<tr><td>";
    SPVote.InnerHtml+=MyAns.GetDataSet.Tables[0].Rows[i][1].ToString();
    SPVote.InnerHtml+="</td><td>";
    SPVote.InnerHtml+="得";
    SPVote.InnerHtml+=MyAns.GetDataSet.Tables[0].Rows[i][2].ToString();
    SPVote.InnerHtml+="票";
    SPVote.InnerHtml+="</td><td>";
    int percentage=100*Convert.ToInt32(MyAns.GetDataSet.Tables[0].Rows[i]["c_num"].ToString())/count;
    SPVote.InnerHtml+="投票率:"+"<img src=\"images\\back.gif\" height=10 width="+200*Convert.ToInt32(MyAns.GetDataSet.Tables[0].Rows[i]["c_num"].ToString())/count+">"+" "+percentage.ToString()+"%";
    SPVote.InnerHtml+="</td></tr>"; }
    SPVote.InnerHtml+="</table>";
    SPVote.InnerHtml+="<p></p>";
    SPVote.InnerHtml+="总共";
    SPVote.InnerHtml+=count.ToString();
    SPVote.InnerHtml+="人参加投票,谢谢您的参与!";
    SPVote.InnerHtml+="<p></p>";
      

  3.   

    上面用到了两个表:
    一个问题表:tb_vt 
    一个回答项表:vote(通过记录tb_vt的id两表关联)
    上面代码可同时显示出所有已经发布的问题的投票结果(tb_vt中字段:l_fb=1的所以问题)。所以用了两个for循环来嵌套的。
    看看关键的代码,应该解决你的问题。