页面上有多个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();
问题是如何重用上面的那一段绑定代码,可否写一段函数,传递给它不同的参数,获得不同的结果。
??? 
  

解决方案 »

  1.   

    public static string getValue(string sql,string defvalue)
    {
    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+"'");
    你照着这个写就可以了
      

  2.   

    可以
    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();}
      

  3.   

    你可以将获取数据源的code,写成一个函数function get_datasource(byval strsql as string)
    '代码部分
    return ds.tables("tablename")
    end functiondatalist1.datasource=get_datasource("select * from tablename").defaultview
    datalist1.databind不过,个人觉得这个方法不是最好的。
      

  4.   

    to zhangyu028(天哪,这么多人)//定义
    private void databind(string strCom,Datalist datalist)
    {    ...省去}
    //调用
    SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
     databind( "SELECT name,id  FROM Emporium ",Datalist1);我用这个方法时,重新生成解决方案:
    -------找不到类型或命名空间名称“Datalist”(是否缺少 using 指令或程序集引用?)
    -提示找不到这样的类型,怎么办?????
      

  5.   

    to  ye_zi(行到水穷处,坐看云起时)public static string getValue(string sql,string defvalue)
    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,.....这段是否有写错,请费心指点,。。
      

  6.   

    to sunnystar365(一个人的天空) 
    这个我写不了,没有入门呀。
      

  7.   


    Datalist注意大小写 DataList