int count=0;
        DataTable dt = ProvinceManager.GetDataSetProvinceAlls("");
        foreach (DataRow dr in dt.Rows)
        {            //查询省份的家数
            DataTable da = CollaborateManager.GetDataTablecollaborateByCount(Convert.ToInt32(dr["PId"].ToString()), 0, 0);

GetDataTablecollaborateByCount(下面有方法!)
            TreeNode no = new TreeNode(dr["name"].ToString()+da.Rows.Count+"家)");
            ViewState["Pid"] = dr["PId"].ToString();//保存Pid
            no.NavigateUrl = "Works.aspx?PId=" + dr["PId"].ToString();
           
            TvProvince.Nodes.Add(no);//绑定省
            no.SelectAction = TreeNodeSelectAction.Expand;
            DataTable dt1 = CityManager.GetDataSetCityById(int.Parse(dr["Pid"].ToString()));
            foreach (DataRow dr1 in dt1.Rows)
            {
                //查询城市的家数
                //DataTable da1 = CollaborateManager.GetDataTablecollaborateByCount(0, Convert.ToInt32(dr["CId"].ToString()), 0);
                //Response.Write(da1.Rows.Count);
                TreeNode no1 = new TreeNode(dr1["name"].ToString()+"家");
                ViewState["CId"] = dr1["CId"].ToString();//保存Pid
                no1.NavigateUrl = "Works.aspx?CId=" + dr1["CId"].ToString();
                
                no.ChildNodes.Add(no1);//绑定城
                no1.SelectAction = TreeNodeSelectAction.Expand;
                DataTable dt2 = AreaManager.GetDatSetAreaById(int.Parse(dr1["CId"].ToString()));
                //DataTable dt2 = CollaborateManager.GetDataTablecollaborateByCount(0,0,int.Parse(dr1["CId"].ToString()));
                foreach (DataRow dr2 in dt2.Rows)
                {
                    TreeNode no2 = new TreeNode(dr2["Aname"].ToString()+"100家");
                    no2.SelectAction = TreeNodeSelectAction.Expand;
                    ViewState["AId"] = dr2["AId"].ToString();//保存Pid
                    no2.NavigateUrl = "Works.aspx?AId=" + dr2["AId"].ToString();
                   
                    no1.ChildNodes.Add(no2);//绑定区
                }
            }
        }        TvProvince.CollapseAll();
        //统计省市区的合作公司的家数
        public DataTable GetDataTablecollaborateByCount(int pid, int cid,int aid) 
        {            StringBuilder strSql = new StringBuilder();
            if( pid!=0)
            {
                strSql.Append("select count(ProId) from Collaborate where ProId="+pid);
            }
            if(cid!=0)
            {
                strSql.Append("select count(CId) from Collaborate where CId=" + cid);
            }
            if(aid!=0)
            {
                strSql.Append("select count(AId) from Collaborate where AId=" + aid);
            }
            return DBHelper.Query(strSql.ToString()).Tables[0];
        }我想根据Collabroate 这个表  Id  tilte     ProId  CId   AID
                     1   上海1公司  2     201  352
                     2   上海2公司  2     201  352
                     3   上海3公司  2     201  352 
                     4   上海4公司  2     201  352  就是想获取 ProId的总条数 可是我获取的都是1家怎么获取的Count上海 (4家)其实就是这个4是怎么获取的 我每次获取都是1啊
   —上海市
          —普陀区     

解决方案 »

  1.   

    strSql.Append("select count(ProId) from Collaborate where ProId="+pid);断点调试,pid为多少?
      

  2.   

    count(*) as countNum from table group by ProId
      

  3.   

    学习中……习惯要么DT.COUNT 要么从数据库里直接查……
      

  4.   


    姐姐类 他是在Tree里面的 那个ProId 是根据Tree的节点传的Id  如果是group by 那是单独用的
      

  5.   

    DataTable da = CollaborateManager.GetDataTablecollaborateByCount(Convert.ToInt32(dr["PId"].ToString()), 0, 0);
    GetDataTablecollaborateByCount(下面有方法!)
      TreeNode no = new TreeNode(dr["name"].ToString()+da.Rows.Count+"家)");
    断点看GetDataTablecollaborateByCount方法里面返回的da.rows.count是不是都为1
      

  6.   

    把三个sql语句改了,如下
    "select count(ProId) from Collaborate where ProId="+pid+" group by proid"
      

  7.   

    检查GetDataTablecollaborateByCount方法中当proid=2时的sql语句,直接在sql里运行,如果在sql里不为1,在程序返回值里返回1
    检查DBHelper.Query(strSql.ToString()).Tables[0];方法
      

  8.   

    <%# getCount(Eval("provice.PId"))%>    #region 合作的家数
        /// <summary>
        /// 查询合作的家数
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
      public string getCount(object obj)
      {
          return CollaborateManager.GetModelHeZuo(string.Format("ProId={0} ", Convert.ToInt32(obj.ToString()))).Count.ToString();
      }
        #endregion
    这是以前没有用Tree的时候 绑定的家数! 先在用了Tree就不行了!
      

  9.   

    靠,无视我上面说的,这次丢人丢大了
    select count(ProId) from Collaborate where ProId="+pid
    直接改
    select * from Collaborate where ProId="+pid
    就行了
    郁闷,不解释
      

  10.   

    dt.Rows.Count
    如果不是这样可以这样
     DataRow[] foundRows = dt.Select("[PId]="+id);
      

  11.   

    可能是这个参数 Convert.ToInt32(dr["PId"].ToString()) 的问题 断点查看下 
      

  12.   

    我觉的方法 和思路不对!因为 他是放在循环Tree里的,我一次获取一个ProId 结果全部的省份后面都是1(家
      

  13.   

    public DataTable GetDataTablecollaborateByCount(int pid, int cid,int aid)  
      {  StringBuilder strSql = new StringBuilder();
      if( pid!=0)
      {
      strSql.Append("select count(ProId) from Collaborate where ProId="+pid);//看这句sql,你写的是求取Collaborate表中ProId=XX的行数总和count(ProId),得出来的肯定是只有一个总和数字
      }
      if(cid!=0)
      {
      strSql.Append("select count(CId) from Collaborate where CId=" + cid);
      }
      if(aid!=0)
      {
      strSql.Append("select count(AId) from Collaborate where AId=" + aid);
      }
      return DBHelper.Query(strSql.ToString()).Tables[0];
      }而循环里面是TreeNode no = new TreeNode(dr["name"].ToString()+da.Rows.Count+"家)");//这是什么?这是所得行数的和!!!!要么把da.Rows.Count改成da.Rows[0][0].ToString()
    要么把select count(ProId) from Collaborate where ProId="+pid改为
    select * from Collaborate where ProId="+pid
    另外看21#不要多次从数据库里查询,一次查出全部,然后用dt.Select方法
      

  14.   


    TreeNode no = new TreeNode(dr["name"].ToString()+da.Rows.Count+"家)");dr["Name"]是省份名   da.Rows.count是家数之和
      

  15.   


    打印出来的 Response.Write("省份合作的公司:"+da.Rows.Count);
    省份合作的公司: 111111111111111111111111111111111111  
      

  16.   

    说一下经验!            //查询省份合作的家数
                TreeNode no = new TreeNode(dr["name"].ToString()+" ("+CollaborateManager.GetProvinceByCount(Convert.ToInt32(dr["PId"]))+"家)");
     //查询城市合作的家数
                    TreeNode no1 = new TreeNode(dr1["name"].ToString()+" ("+CollaborateManager.GetCityByCount(Convert.ToInt32(dr1["CId"]))+"家)");
            #region 获取省市区合作的公司
            //统计省份的合作公司
            public int GetProvinceByCount(int id)
            {
                string sql = "select count(ProId) from Collaborate where ProId=" + id;
                int pid = Convert.ToInt32(DBHelper.ExecuteScalar(sql, CommandType.Text, new SqlParameter("ProId", id)));
                return pid;
            }
            //统计城市的合作公司
            public int GetCityByCount(int cid)
            {
                string sql = "select count(CId) from Collaborate where CId=" + cid;
                int c = Convert.ToInt32(DBHelper.ExecuteScalar(sql, CommandType.Text, new SqlParameter("CId", cid)));
                return c;
            }
            #endregion---DbHepler加上一个 返回首行首列
            private static SqlCommand GetCommand(string cmdText, CommandType cmdType, SqlParameter[] values)
            {
                SqlCommand cmd = new SqlCommand();
                cmd.CommandText = cmdText;
                cmd.CommandType = cmdType;
                cmd.Connection = new SqlConnection(connectionString);
                if (values != null)
                    foreach (SqlParameter p in values)
                        cmd.Parameters.Add(p);            cmd.Connection.Open();
                return cmd;
            }
            //查询出第一行的第一列,返回Object
            public static object ExecuteScalar(string cmdText, CommandType cmdType, params SqlParameter[] parameters)
            {
                SqlCommand cmd = GetCommand(cmdText, cmdType, parameters);
                object result = cmd.ExecuteScalar();
                cmd.Connection.Close();
                return result;
            }哈哈!结贴了!终于出来了!分数按回答的内容 给分!
      

  17.   

    恭喜,其实不用加这么多方法
    DataTable dt = ProvinceManager.GetDataSetProvinceAlls("");//取出全部
    然后
    DataRow[]drs=dt.Select("proid="+proid);
    int i=drs.count;
    TreeNode no = new TreeNode(dr["name"].ToString()+" ("+CollaborateManager.GetProvinceByCount(Convert.ToInt32(dr["PId"]))+"家)");//用i替换