页面上有多个datalist需要绑定到数据源。如:
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
string strCom1 = "SELECT name,id FROM Emporium ";
SqlCommand selCom1 = new SqlCommand(strCom1, myConnection);
System.Data.SqlClient.SqlDataReader dr; myConnection.Open();
dr = selCom1.ExecuteReader();
Datalist1.DataSource = dr;
Datalist1.DataBind();
dr.Close(); string strCom2 = "SELECT id,sort FROM sort ";
SqlCommand selCom2 = new SqlCommand(strCom2, myConnection);
System.Data.SqlClient.SqlDataReader dr2;
dr2 = selCom2.ExecuteReader();
DataList2.DataSource = dr2;
DataList2.DataBind();
dr2.Close();
string strCom3 = "SELECT top 8 shopname as name ,url ,substring(title,1,10) as title2 FROM info where zn='0' ORDER BY id DESC";
SqlCommand selCom3 = new SqlCommand(strCom3, myConnection);
System.Data.SqlClient.SqlDataReader dr3;
dr3 = selCom3.ExecuteReader();
DataList3.DataSource = dr3;
DataList3.DataBind();
dr3.Close();
问题是如何重用上面的那一段绑定代码,可否写一段函数,传递给它不同的参数,获得不同的结果。
???
{
System.Data.SqlClient.SqlConnection myConnection = new System.Data.SqlClient.SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectString"]);
System.Data.SqlClient.SqlCommand myCommand = new SqlCommand(sql, myConnection);
System.Data.SqlClient.SqlDataReader rdr;
try
{
myConnection.Open();
rdr = myCommand.ExecuteReader();
if (rdr.Read())
{
return rdr[0].ToString();
}
else
{
return defvalue;
}
}
catch
{
return defvalue;
}
finally
{
myConnection.Close();
}
}//下面是调用
hth = crm.csp.getValue(true," select hth from xs_ht where htname='"+htname.Text+"'");
你照着这个写就可以了
private void databind(string strCom,Datalist datalist)
{
SqlCommand selCom = new SqlCommand(strCom, myConnection);
System.Data.SqlClient.SqlDataReader dr; myConnection.Open();
dr = selCom.ExecuteReader();
datalist.DataSource = dr;
datalist.DataBind();
dr.Close();}
'代码部分
return ds.tables("tablename")
end functiondatalist1.datasource=get_datasource("select * from tablename").defaultview
datalist1.databind不过,个人觉得这个方法不是最好的。
private void databind(string strCom,Datalist datalist)
{ ...省去}
//调用
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
databind( "SELECT name,id FROM Emporium ",Datalist1);我用这个方法时,重新生成解决方案:
-------找不到类型或命名空间名称“Datalist”(是否缺少 using 指令或程序集引用?)
-提示找不到这样的类型,怎么办?????
catch{ return defvalue ;}
---------“string defvalue”是传进去的值,还是传出的值,
我学过的应是传入的值呀。你在这里用它代表什么呢。if (rdr.Read())
{ return rdr[0].ToString(); }
---------这里是否只能读第一个值吧?而我需要的是多个值将其赋给datalist, .....hth = crm.csp.getValue(true," select hth from xs_ht where htname='"+htname.Text+"'");
---------两个参数第一个应是SQL语句,为何这里是true,.....这段是否有写错,请费心指点,。。
这个我写不了,没有入门呀。
Datalist注意大小写 DataList