身边有个有关日程的源代码(控件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 = "";
}
}
其中有个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 = "";
}
}
http://www.codesoso.com/code/EventCalendar.aspx
DataTable dd=new DataTable();
while (dr.Read())
{
DataRow row = dd.NewRow();
row["字段"]=dr["number"].ToString();
row["字段2"] = dr["number2"].ToString(); } return dd;
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;
}