为下拉列表绑定数据并返回值
本文关键字:返回值 数据 绑定 下拉列表 | 更新日期: 2023-09-27 18:14:57
我是asp.net和c#的新手,我想得到一些下拉列表的帮助。我想在下拉列表中返回Students表中特定学生的ClassName值。我还希望用StudentClasses表中的所有classname填充下拉列表。但是我后面的代码确实在下拉列表中返回任何值。
谁能告诉我我做错了什么?我有一个名为StudentClasses的表,包含以下数据,例如:
ClassID ClassName
==
1 5B
2 6C
3 K/1F
我有另一个名为Students的表,其中来自StudentClasses的ClassID是外键,例如:
StudentID FirstName LastName ClassID
==
1 John Smith 1
2 Sarah Jones 2
3 Billy Cain 2
我想在我的页面视图中返回以下内容:
Class将是StudentClasses中所有className的下拉列表,显示John Smith的Class, 5B。"名"answers"姓"是文本框。我也有一个更新按钮,所以我可以编辑细节要编辑Class,他们只能从下拉列表中选择。
First Name: John Last Name: Smith Class: 5B
这是aspx页面背后的代码。
protected void rptStudents_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
DropDownList ddlClassName = (DropDownList)e.Item.FindControl("ddlClassName");
ddlClassName.DataTextField = "ClassName";
ddlClassName.DataValueField = "ClassID";
//this is the object that is bound to this particular item (row)
StudentClass className = (StudentClass)e.Item.DataItem;
//TO DO: student should contain class id instead of name.
ddlClassName.SelectedValue = (className.ClassID).ToString();
//to do get list of class items here and set datasource and then databind();
Result<List<StudentClass>> result = StudentClassController.GetAllStudentClasses();
ddlClassName.DataSource = result.Data;
ddlClassName.DataBind();
}
确保您的控件设置为AutoPostBack=true,并且在Page_Load()上您没有调用任何会擦除或覆盖下拉列表内容的内容。具体来说,我总是总是总是把自己搞砸,做一些像
这样的事情protected void Page_Load(object sender, EventArgs e)
{
PopulateDropDownList();
}
但是你真的需要说
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateDropDownList();
}
}
我在不知道类结构和东西的情况下跟随你的代码有点麻烦,但这里有一段代码,我在我们的应用程序中使用它来填充一个文本和值的下拉列表:
EmployeeList allemployees = EmployeeManager.GetList();
EmployeeEDropDownList.Items.Clear();
EmployeeEDropDownList.Items.Add(""); //add a blank item on top to simulate no selection
foreach (Employee currentemp in allemployees)
{
EmployeeEDropDownList.Items.Add(new ListItem(currentemp.Name.FullNameE, currentemp.EmployeeID.ToString()));
}
也许这会给你另一种想法。在我看来,这比你的更"简单",更容易理解,但就像我说的,没有看到你的整个应用程序,我真的不能做出这样的判断:)