身边有个有关日程的源代码(控件EventCalendar),写的方法很简单,只是显示对应gridview的日期事项,
其中有个gridview,是用datatable自建的数据,如下, private DataTable GetEvents()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("EventDate",Type.GetType("System.DateTime"));
        dt.Columns.Add("EventHeader",Type.GetType("System.String"));
        dt.Columns.Add("EventDescription",Type.GetType("System.String"));
        DataRow dr;
        // Last Week's Events
        dr = dt.NewRow();
        dr["EventDate"] = DateTime.Now.AddDays(-7);
        dr["EventHeader"] = "My Last Week's Event 1";
        dr["EventDescription"] = "My Last Week's Event 1 Description";
        dt.Rows.Add(dr);
        // Yesterday's Events
        dr = dt.NewRow();
        dr["EventDate"] = DateTime.Now.AddDays(-1);
        dr["EventHeader"] = "My Yesterday's Event 1";
        dr["EventDescription"] = "My Yesterday's Event 1 Description";
        dt.Rows.Add(dr);
       ......
        return dt;
    }
现在,我要从数据库里读出的话,应该怎写?(一定要datatable的方法)
一般我都是用三层方法写的,
1. public static IList<EModel> E_total(string d1, string d2, string dq, string bm, string name,string ja)
        {
            SQLHelper hrsqlhelp = new SQLHelper();
            SqlParameter[] par = {hrsqlhelp.CreateInParam("@d1", SqlDbType.VarChar, 50,d1),
                                           hrsqlhelp.CreateInParam("@d2", SqlDbType.VarChar, 50, d2),
                                           ..... hrsqlhelp.CreateInParam("@ja", SqlDbType.VarChar, 10,ja)
                                       };
            SqlDataReader dr = null;
            try
            {
                hrsqlhelp.RunProc("E_total", par, out dr);
            }
            catch (Exception ex)
            {
                SystemError.CreateErrorLog(ex.Message);
                throw new Exception(ex.Message, ex);
            }
            List<EModel> list = new List<EModel>();
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    EModel emodel = new EModel();
                    emodel.number = dr["number"].ToString();
                  ......
                  emodel.E_zw = dr["E_zw"].ToString();
                    emodel.E_zwd = dr["E_zwd"].ToString();                    list.Add(emodel);
                }
                dr.Close();
            }
            return list;
        }
然后再 public void BinData()
        {            ...
            IList<EModel> list = ESQL.E_total(startime, endtime,dq, bm, name,ja);
            GridView1.DataSource = list;            GridView1.DataKeyNames = new string[] { "number" };
            GridView1.DataBind();
            this.ddlCurrentPage.Items.Clear();
            for (int i = 1; i <= this.GridView1.PageCount; i++)
            {
                this.ddlCurrentPage.Items.Add(i.ToString());
            }
            if (this.ddlCurrentPage.SelectedIndex == -1)
            {
                this.Label1.Text = "没有数据!";
            }
            else
            {
                this.ddlCurrentPage.SelectedIndex = this.GridView1.PageIndex;
                this.Label1.Text = "";
            }
        }

解决方案 »

  1.   

    那个记录日程安排的日历控件源代码下载地址:
    http://www.codesoso.com/code/EventCalendar.aspx
      

  2.   


                     DataTable dd=new DataTable();
                    
                while (dr.Read())
                      {
                      DataRow row = dd.NewRow();
                     row["字段"]=dr["number"].ToString();
                     row["字段2"] = dr["number2"].ToString();                  }            return dd;
            
      

  3.   

     我这样写对吗
    ESQL.cs  public static IList<EModel> Exsl_total()
            {
                string sql = "select * from E_xsl";
                List<EModel> list = new List<EModel>();
                DataTable dt = DBHelper.ExecuteGetDataTable(CommandType.Text, sql, null);
                foreach (DataRow dr in dt.Rows)
                {
                    EModel emodel = new EModel();
                    emodel.number = (string)dr["E_number"];
                    emodel.E_lb = (string)dr["E_lb"];
                    emodel.E_usern = (string)dr["E_usern"];
                    emodel.E_unum = (string)dr["E_unum"];
                    emodel.E_d1 = (string)dr["E_d1"];
                    emodel.E_t = (string)dr["E_t"];
                    //jiamodel.jb_sm = (string)dr["jb_sm"];
                    list.Add(emodel);
                }
                return list;
           }aspx.cs  public DataTable GetEvents()
            {
                DataTable dt = new DataTable();
                //name = Session["ryxm"].ToString();
                IList<EModel> list = ESQL.Exsl_total();
                gvSelectedDateEvents.DataSource = dt;            gvSelectedDateEvents.DataKeyNames = new string[] { "number" };
                gvSelectedDateEvents.DataBind();
                return dt;
           }