理想状态是这样的            SkyLon.BLL.GW_MWL_S GWMonth = new GW_MWL_S();
            DataTable DtMonth = GWMonth.GetList("STCD='" + STCD + "' and Left(YM,4)='" + DateTime.Now.Year.ToString() + "'").Tables[0];//的到一年内12个月的数据
            for (int i = 1; i < 13; i++)//一年中12个月的数据
            {
                strBuilder.Append("<td bgcolor='#FFFFFF'><div align='center'>" + DtMonth.Rows[i]["MMNGWL"].ToString() + "</div></td>");
            }但是假如我一年中的数据不全,其中某个月的数据丢失这样就会出错,想要的结果是对应的月份输出对应的数据,没有数据的月份就输出
strBuilder.Append("<td bgcolor='#FFFFFF'><div align='center'> -- </div></td>");
请高手指点!

解决方案 »

  1.   

    循环的时候判断一下呗,DtMonth 中应该要得到哪些月份有数据,哪些月份没数据
      

  2.   

            //如果没有月份字段名
            DtMonth.Columns.Add("MonthNum");
            for (int i = 0; i < DtMonth.Rows.Count; i++)
            {
                string ym = DtMonth.Rows[i]["ym"].ToString();
                //取出月数
                string mnum = ym;//....需改            DtMonth.Rows[i]["MonthNum"] = mnum;
            }        for (int i = 1; i < 13; i++)//一年中12个月的数据
            {
                DataRow[] drs = DtMonth.Select("MonthNum='" + i.ToString() + "'");//如果没有月份字段名
                if (drs.Length > 0)
                {
                    strBuilder.Append("<td bgcolor='#FFFFFF'><div align='center'>" + drs[0]["MMNGWL"].ToString() + "</div></td>");
                }
                else
                {
                    //...
                }
            }
      

  3.   

    谢谢 cool 一生月份字段是字符型的字段名称为varchar,保存格式为2005-06这样的
      

  4.   

                SkyLon.BLL.GW_MWL_S GWMonth = new GW_MWL_S();
                DataTable DtMonth = GWMonth.GetList("STCD='" + STCD + "' and Left(YM,4)='" + DateTime.Now.Year.ToString() + "'").Tables[0];//的到一年内12个月的数据
          for (int i = 1; i < 13; i++)//一年中12个月的数据
            {
                DataRow[] drs = DtMonth.Select("YM='" DateTime.Now.Year.ToString() + "-" + i.ToString() + "'");
                if (drs.Length > 0)
                {
                    strBuilder.Append("<td bgcolor='#FFFFFF'><div align='center'>" + drs[0]["MMNGWL"].ToString() + "</div></td>");
                }
                else
                {
                    //...
                }
            }
      

  5.   


          SkyLon.BLL.GW_MWL_S GWMonth = new GW_MWL_S();
          DataTable DtMonth = GWMonth.GetList("STCD='" + STCD + "' and Left(YM,4)='" + DateTime.Now.Year.ToString() + "'").Tables[0];//的到一年内12个月的数据
          for (int i = 1; i < 13; i++)//一年中12个月的数据
          {
              DataRow[] drs = DtMonth.Select("YM='" + DateTime.Now.Year.ToString() + "-" + i.ToString("00") + "'");
              if (drs.Length > 0)
              {
                strBuilder.Append("<td bgcolor='#FFFFFF'><div align='center'>" + drs[0]["MMNGWL"].ToString() + "</div></td>");
              }
              else
              {
                //...
              }
          }
      

  6.   

                DataTable DtMonth = new DataTable();
                //DtMonth=GetData();//略
                StringBuilder dataInfo=new StringBuilder();
                for (int i = 1; i < 13;i++ )
                {
                    //假设你的结果中有“monthNum”一列,若没有则在SQL中组织该列
                    DataRow[] rows = DtMonth.Select(string.Format("monthNum={0}", i));
                    if (rows!=null)
                    {
                        //有月份数据的(示例)
                        dataInfo.Append(rows[0]["MMNGWL"].ToString());
                    }
                    else
                    {
                        //无月份数据的(示例)
                        dataInfo.Append(string.Format("无{0}月数据",i));
                    }
                }