既然是统计查询,第一肯定是要统计

   public DataSet GetStiCount(string strWhere)
        {
            StringBuilder strSql = new StringBuilder();
            strSql.Append("select TCSTM.CNAME  as '区',TWORDS.[NAME]  as  '反映类型', sum(ALLCOUNT) as '受理案件数' ,sum( OCOUNT) as '已解决' , sum(NCOUNT) as '未解决' from  ");
            strSql.Append(" ( select  CUSTOMERID,INFOTYPECODE,COUNT(*) AS ALLCOUNT,0 AS OCOUNT,0 AS NCOUNT  ");
            strSql.Append(" FROM T_CASEINFO  ");
            strSql.Append(" where 1=1" + strWhere);
            strSql.Append(" GROUP BY INFOTYPECODE,CUSTOMERID ");
            strSql.Append(" UNIon All ");
            strSql.Append("SELECT CUSTOMERID,INFOTYPECODE,0 AS ALLCOUNT,COUNT(*)  AS OCOUNT,0 AS NCOUNT ");
            strSql.Append(" FROM T_CASEINFO ");
            strSql.Append(" WHERE  1=1"+strWhere );
            strSql.Append(" and    TAG<>'3' OR (ISSOLVING<>0 AND ISSOLVING<>1 )            ");
            strSql.Append(" GROUP BY INFOTYPECODE,CUSTOMERID");
            strSql.Append("  Union All ");
            strSql.Append(" SELECT CUSTOMERID,INFOTYPECODE,0 AS ALLCOUNT,0 AS OCOUNT,COUNT(*)  AS NCOUNT  ");
            strSql.Append(" FROM T_CASEINFO ");
            strSql.Append(" WHERE   1=1 "+ strWhere  );
            strSql .Append (" and  TAG='3' AND (ISSOLVING=0 OR ISSOLVING=1)  ");
            strSql.Append(" GROUP BY INFOTYPECODE,CUSTOMERID ");
            strSql.Append(" )T_CaseInfo   ");
            strSql.Append(" LEFT JOIN (SELECT CUSTOMERID,CNAME FROM T_CUSTOMER) TCSTM ON TCSTM.CUSTOMERID = T_CaseInfo.CUSTOMERID  ");
            strSql.Append("LEFT JOIN (SELECT CODE,[NAME] FROM T_WORDS)TWORDS  ON T_caseinfo.INFOTYPECODE=TWORDS.CODE   ");
            strSql.Append(" GROUP BY TWORDS.[NAME],TCSTM.CNAME");
            strSql.Append(" order by TCSTM.CNAME,TWORDS.[NAME] desc ");
            DataTable dtb = new DataTable();
            return DbHelperSQL.Query(strSql.ToString());
        }

 

这是统计,第二是有条件查询。

 private string GetQueryStr()
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(this.dllCstmName.SelectedIndex.ToString() == "0" ? "" : " and  CustomerID='" + this.dllCstmName.SelectedItem.Value.Trim() + "'");
                //上报时间
           sb.Append("and ReportTime between '" + Convert.ToDateTime(InputSTime.Text).ToString("yyyy-MM-dd") + " 00:00:00'" + " and '" + Convert.ToDateTime(InputETime.Text).ToString("yyyy-MM-dd") + " 23:23:59'");
           if (tree1.Value!="")
           {
               if (tree1.Value != "-01")
               {
                   sb.Append(" and InfoTypeCode like'" + this.tree1.Value.Trim() + "%'");
               }
           }
           sb.Append(this.dllSolvingUser.SelectedIndex.ToString() == "0" ? "" : " and SolvingUser='" + this.dllSolvingUser.SelectedItem.Value.Trim() + "'");

            return sb.ToString();

        }

这就是有条件查询。

  private void BindList()
        {
         
            string SQLAccept = GetQueryStr();
            DataSet dsAccept = objCase.GetStiCount(SQLAccept);
            gv.DataSource = dsAccept;
            gv.DataBind();
            Session["TongJi"] = dsAccept;
            RowSpanGrid(gv, new int[] { 0 });
            if (dsAccept.Tables[0].Rows.Count <= 0)
            {
                this.tool.Visible = false;
            }
            else
            {
             this.tool.Visible = true;
            }
        }

 

这是因为统计,所以不想出现太多的客户名称

 

 protected void RowSpanGrid(GridView gdv, int[] arr)
        {
            for (int cellNum = 0; cellNum < arr.Length; cellNum++)
            {
                //对列 cellNum 进行合并,从左向右,由上而下

                int i = 0, rowSpanNum = 1;
                while (i < gdv.Rows.Count - 1)
                {
                    GridViewRow gvr = gdv.Rows[i];

                    for (++i; i < gdv.Rows.Count; i++)
                    {
                        GridViewRow gvrNext = gdv.Rows[i];
                        //if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text)
                        if (gvr.Cells[cellNum].Text == gvrNext.Cells[cellNum].Text
                            && gvrNext.Cells[cellNum].Text.Trim().Replace("&nbsp;", "").Length > 0)
                        {
                            gvrNext.Cells[cellNum].Visible = false;
                            rowSpanNum++;
                        }
                        else
                        {
                            gvr.Cells[cellNum].RowSpan = rowSpanNum;
                            rowSpanNum = 1;
                            break;
                        }

                        if (i == gdv.Rows.Count - 1)
                        {
                            gvr.Cells[cellNum].RowSpan = rowSpanNum;
                        }
                    }
                }
            }

        }

 

posted on 2010-06-07 11:36  挑战自我  阅读(330)  评论(0编辑  收藏  举报