我想从Lis下拉列表中添加数据文本字段和数据值字段。我怎么能这样做?
到目前为止,我确实喜欢这个,但它有一个错误:
DataBinding:'System.String'不包含具有名称的属性 'cos_name'。
这是我的数据访问层:
public List<String> GetAllCourseName()
{
SqlConnection objsqlconn = new SqlConnection(conn);
objsqlconn.Open();
SqlDataAdapter da = new SqlDataAdapter("select cos_ID, cos_name from course_details", objsqlconn);
DataSet ds = new DataSet();
da.Fill(ds, "course_details");
List<String> courseName = new List<String>();
foreach(DataRow row in ds.Tables["course_details"].Rows)
{
courseName.Add(row["cos_ID"].ToString());
courseName.Add(row["cos_name"].ToString());
}
return courseName;
}
这是我的表单加载
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
FillCourseName();
}
}
public void FillCourseName()
{
ddcoursename.DataSource = objda.GetAllCourseName();
ddcoursename.DataTextField = "cos_name";
ddcoursename.DataValueField = "cos_ID";
ddcoursename.DataBind();
}
答案 0 :(得分:4)
为您的数据创建一个新类...
public class CourseDetailsClass
{
public string cos_ID { get; set; }
public string cos_name { get; set; }
}
然后像这样修改你的GetAllCourseName方法......
public List<CourseDetailsClass> GetAllCourseName()
{
SqlConnection objsqlconn = new SqlConnection(conn);
objsqlconn.Open();
SqlDataAdapter da = new SqlDataAdapter("select cos_ID, cos_name from course_details", objsqlconn);
DataSet ds = new DataSet();
da.Fill(ds, "course_details");
List<CourseDetailsClass> courseName = new List<CourseDetailsClass>();
foreach(DataRow row in ds.Tables["course_details"].Rows)
{
courseName.Add(new CourseDetailsClass
{
cos_ID = row["cos_ID"].ToString(),
cos_name = row["cos_name"].ToString()
});
}
return courseName;
}
那也应该对你有用。然后,您可以将该列表用作数据源,现在它将能够找到TextDataField
和TextValueField
字段。
答案 1 :(得分:1)
问题是您的方法GetAllCourseName
会返回一个字符串列表,这些字符串显然没有属性cos_name
和cos_ID
。相反,您可以返回一个数据表并将其绑定到下拉列表:
public DataTable GetAllCourseName()
{
SqlConnection objsqlconn = new SqlConnection(conn);
objsqlconn.Open();
SqlDataAdapter da = new SqlDataAdapter("select cos_ID, cos_name from course_details", objsqlconn);
DataSet ds = new DataSet();
da.Fill(ds, "course_details");
return ds.Tables["course_details"];
}
FillCourseName
方法无需更改。