using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient; 
using System.Collections;
namespace shopRepaintSys
{
/// <summary>
/// CountProvince1 的摘要说明。
/// </summary>
public class CountProvince1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected string suserID;
protected string cmdtxt;
protected string sdate;
protected int i;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
cmdtxt = "server=(local);database=ad_class;Uid=sa;Pwd=";
sdate=this.TextBox1.Text.ToString();
suserID=this.TextBox2.Text.ToString();
SqlConnection Con = new SqlConnection(cmdtxt);
Con.Open();
SqlCommand Com = new SqlCommand("select userID,Convert(varchar(10),clickDate,120)as clickDate,ProvinceName,ProvinceCount from Z_click_provinceCount where userID='"+suserID+"' and clickDate='"+sdate+"' group by userID,provinceName,provinceCount,Convert(varchar(10),clickDate,120) order by provinceCount desc", Con);
SqlDataReader dr = Com.ExecuteReader();
dr.Read();
string strContent = null;
if (dr.HasRows)
{
strContent = dr["ProvinceCount"].ToString();
}
dr.Close();
decimal decNumAll = GetNumAll(strContent);//得到所有点击数
Response.Write(GetResult(strContent, decNumAll));
}
public string GetResult(string strContent, decimal decNumAll)
{
sdate=this.TextBox1.Text.ToString();
suserID=this.TextBox2.Text.ToString();
cmdtxt = "server=(local);database=ad_class;Uid=sa;Pwd=";
SqlConnection con = new SqlConnection(cmdtxt);
con.Open();
DataSet ds=new DataSet("Z_click_provinceCount");
SqlDataAdapter da=new SqlDataAdapter("select userID,Convert(varchar(10),clickDate,120)as clickDate,ProvinceName,ProvinceID,ProvinceCount from Z_click_provinceCount where userID='"+suserID+"' and clickDate='"+sdate+"' group by userID,provinceID,ProvinceName,provinceCount,Convert(varchar(10),clickDate,120) order by provinceCount desc", con);
da.Fill(ds,"Z_click_provinceCount");
//SqlCommandBuilder scb=new SqlCommandBuilder(da);
string strBody = "<body style=text-align:center><table width=60% border=1 cellpadding=0 cellspacing=0 text-align:center>\n";

foreach(DataRow dr in ds.Tables["Z_click_provinceCount"].Rows) 

Hashtable hs=new Hashtable();
hs.Add(dr["ProvinceName"].ToString(),dr["ProvinceName"].ToString());

foreach(DictionaryEntry de in hs)
{
string arrArea ="北京,广东,上海,山东,江苏,浙江,辽宁,四川,湖北,黑龙江,湖南,河南,福建,陕西,安徽,江西,重庆,云南,河北,吉林,天津,广西,山西,内蒙古,贵州,新疆,甘肃,香港,海南,宁夏,青海,台湾,西藏,澳门,其他地区";

if(de.Value.ToString().Equals(arrArea))
{
//得到的该地区的点击数
//string sArea=arrArea.Split(',')[i].ToString();
string SClickArea=dr["ProvinceName"].ToString(); decimal decItemNum = Convert.ToDecimal(dr["provinceCount"].ToString());
decimal decPercent = GetPercent(decItemNum, decNumAll) * 100;//得到百分比
string strPercent = decPercent.ToString();//将百分比转为字符型
if (strPercent.Length > 5)//如果百分比结果长度超过5位
{
strPercent = strPercent.Substring(0, 5);//将百分比的余数截短为“00.00”
}
//Response.Write(dt.Select().ToString());
strBody += "<tr><td width=100 style=font-size:9pt;text-align:center>" +SClickArea+ "</td><td width=50 style=font-size:9pt;color=red;text-align:center>" + decItemNum.ToString() + "次</td><td style=font-size:9pt><img src=Images/bar1.gif height=10 width=" + strPercent + "%></td><td width=50 style=font-size:9pt;color=red;text-align:center>"+strPercent+"%</td></tr>\n";
return SClickArea;
}
else
{
DataTable dt;
dt =new DataTable();
DataRow myRow;
myRow = dt.NewRow();
myRow["ProvinceName"] = "+arrArea+";
dt.Rows.Add(myRow);
foreach(DataColumn dc in dt.Columns)
{
//得到的该地区的点击数
//string sArea=arrArea.Split(',')[i].ToString();
// string SClickArea=dr["ProvinceName"].ToString(); decimal decItemNum = Convert.ToDecimal(dr["provinceCount"].ToString());
decimal decPercent = GetPercent(decItemNum, decNumAll) * 100;//得到百分比
string strPercent = decPercent.ToString();//将百分比转为字符型
if (strPercent.Length > 5)//如果百分比结果长度超过5位
{
strPercent = strPercent.Substring(0, 5);//将百分比的余数截短为“00.00”
}
//Response.Write(dt.Select().ToString());
strBody += "<tr><td width=100 style=font-size:9pt;text-align:center>" +dc.ColumnName.Trim().ToString()+ "</td><td width=50 style=font-size:9pt;color=red;text-align:center>" + decItemNum.ToString() + "次</td><td style=font-size:9pt><img src=Images/bar1.gif height=10 width=" + strPercent + "%></td><td width=50 style=font-size:9pt;color=red;text-align:center>"+strPercent+"%</td></tr>\n";
}
}

}
}
strBody += "</table></body>";
return strBody;
}

  /// <summary>
/// 点击总数求和
/// </summary>
/// <param name="strNum">当前所要操作的字串</param>
/// <returns></returns>
public decimal GetNumAll(string strNum)
{
decimal decNumAll = 0;
sdate=this.TextBox1.Text.ToString();
suserID=this.TextBox2.Text.ToString();
cmdtxt = "server=(local);database=ad_class;Uid=sa;Pwd=";
SqlConnection con1 = new SqlConnection(cmdtxt);
con1.Open();
SqlCommand com = new SqlCommand("select userID,Convert(varchar(10),clickDate,120)as clickDate,ProvinceName,ProvinceCount from Z_click_provinceCount where userID='"+suserID+"' and clickDate='"+sdate+"' group by userID,provinceName,provinceCount,Convert(varchar(10),clickDate,120) order by provinceCount desc", con1);
SqlDataReader dr2 = com.ExecuteReader();
while(dr2.Read())
{
decNumAll += Convert.ToInt32(dr2["provinceCount"].ToString());//计算总点击量
}
return decNumAll;
}
 
/// <summary>
/// 百分比
/// </summary>
/// <param name="decItem">当前选项本身的票数</param>
/// <param name="decNumAll">所有的票数</param>
/// <returns></returns>
public decimal GetPercent(decimal decItem, decimal decNumAll)
{
if (decNumAll == 0)//如果总票数是零
{
decNumAll++;//加一,避免除0出错
}
decimal decPercent = decItem / decNumAll;
return decPercent;
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}
}不好意思,分不够了。

解决方案 »

  1.   

    “/shopRepaintSys”应用程序中的服务器错误。
    --------------------------------------------------------------------------------列“ProvinceName”不属于表 。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.ArgumentException: 列“ProvinceName”不属于表 。源错误: 
    行 90:  DataRow myRow;
    行 91:  myRow = dt.NewRow();
    行 92:  myRow["ProvinceName"] = "+arrArea+";
    行 93:  dt.Rows.Add(myRow);
    行 94:  foreach(DataColumn dc in dt.Columns)
     源文件: c:\inetpub\wwwroot\shoprepaintsys\countprovince1.aspx.cs    行: 92 堆栈跟踪: 
    [ArgumentException: 列“ProvinceName”不属于表 。]
       System.Data.DataRow.set_Item(String columnName, Object value) +101
       shopRepaintSys.CountProvince1.GetResult(String strContent, Decimal decNumAll) in c:\inetpub\wwwroot\shoprepaintsys\countprovince1.aspx.cs:92
       shopRepaintSys.CountProvince1.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\shoprepaintsys\countprovince1.aspx.cs:45
       System.Web.UI.Control.OnLoad(EventArgs e) +67
       System.Web.UI.Control.LoadRecursive() +35
       System.Web.UI.Page.ProcessRequestMain() +731
    错误信息在这,改怎么来改,头都大了,郁闷死了。
    循环也好象有问题,快泄气了................
      

  2.   

    异常详细信息: System.ArgumentException: 列“ProvinceName”不属于表 。???
      

  3.   

    分都没有 看那么多代码
    列“ProvinceName”不属于表 。这不告诉你了吗
      

  4.   

    不用看了,你就说foreach(DataRow dr in ds.Tables["Z_click_provinceCount"].Rows) 


    hs.Add(dr["ProvinceName"].ToString(),dr["ProvinceName"].ToString());
    // string SClickArea=dr["ProvinceName"].ToString();
    decimal decItemNum = Convert.ToDecimal(dr["provinceCount"].ToString());
    decimal decPercent = GetPercent(decItemNum, decNumAll) * 100;//得到百分比
    string strPercent = decPercent.ToString();//将百分比转为字符型 }
    这怎么strPercent保存到当前行就可以了。开始的代码都没用,一开始我就错了。
      

  5.   

    就是你那个表没有这个字段ProvinceName
      

  6.   

    错误是因为没有往datatable里添加列。