我的数据库代码:
USE Student
GO
CREATE PROCEDURE spDisplayCountry
AS
BEGIN
SELECT countryName
FROM CountryList
END
此代码创建了一个我想从C#代码中使用的存储过程。
用于检索数据的C#代码:
protected void Page_Load(object sender, EventArgs e)
{
// Connection String
string constr = ConfigurationManager.ConnectionStrings["EmployeeContext"].ToString();
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("spDisplayCountry",con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds); // Fill Dataset
countryList.DataTextField = ds.Tables[0].Columns["countryName"].ToString();
countryList.DataValueField = ds.Tables[0].Columns["countryId"].ToString(); // to retrieve specific text feild name.
countryList.DataSource = ds.Tables[0]; // assigning Datasource to DropDown List
countryList.DataBind(); // binding dropdown list.
}
答案 0 :(得分:0)
您需要指定要显示到DataTextField
和DataValueField
的列的名称 - 而不是这些列的值 - 加上:您无法指定CountryId
如果你没有在存储过程中检索它!
所以它应该是
countryList.DataTextField = "CountryName";
countryList.DataValueField = "CountryId";
您需要将存储过程更改为:
CREATE PROCEDURE spDisplayCountry
AS
BEGIN
SELECT CountryId, CountryName
FROM dbo.CountryList
END
此外,如果你只检索一组数据(你通常会这样做),那么实例化DataSet
(可能包含几个相关的数据集)真的没有意义 - 只需使用{{1} }:
DataTable