在asp.net中,给控件添加数据源,一般可以参用控件的数据源配置向导,但个人感觉,不够灵活,不方便传递参数。比与在建立objectdatasource时,参数源就只能选择:Cookie,Control,Form,Profile,Querystring和Session,就不能使用自定义变量(也许自己没有发现)。而我是这样给控件动态添加数据源的:
1、建立一带参数的存储过程
CREATE PROCEDURE GetCityList
(
@ProvinceID char(2)
)
AS
select ssdh,City from GypCity where left(ssdh,2)=@ProvinceID
2、定义一方法,调用存储过程
public SqlDataReader GetCityList(string ProvinceID)
{
//实例化一个数据库连接对象
SqlConnection MyConnection = new SqlConnection(ConfigurationManager.AppSettings["DatabaseConnection"]);
//实例化一个使用MyConnection打开存储过程UserLogin的数据库命令对象
SqlCommand MyCommand = new SqlCommand("GetCityList", MyConnection);
//定义MyCommand为打开存储过程的数据库命令
MyCommand.CommandType = CommandType.StoredProcedure;
//为MyCommand添加输入参数@ProvinceID
MyCommand.Parameters.Add("@ProvinceID", SqlDbType.Char, 2).Value =ProvinceID;
//打开数据库连接
MyConnection.Open();
//执行数据库命令,并取得SqlDataReader
SqlDataReader result=MyCommand.ExecuteReader(CommandBehavior.CloseConnection);
//返回result
return result;
}
3、将方法的返回值定义为控件数据源,进行邦定
DataBaseConnection conn = new DataBaseConnection();
DropDownList_City.DataSource = conn.GetCityList(LoginedUserDetails.ssdh.Substring(0, 2));
DropDownList_City.DataTextField = "City";
DropDownList_City.DataValueField = "ssdh";
DropDownList_City.DataBind();