我有一个下拉列表控件,其中填充了项目和一些代码以获取当前选定的项目值。问题是我只得到列表中第一项的值,而不管实际选择了什么项目。
以下是填充下拉列表的代码:
protected void displayCreateCategories()
{
StoreDataContext db = new StoreDataContext();
var a = from c in db.Categories
orderby c.Name
select new{catName= c.Name,
catId=c.CategoryID};
ddlCategory.DataSource = a;
ddlCategory.DataTextField = "catName";
ddlCategory.DataValueField = "catId";
ddlCategory.DataBind();
}
要获取当前所选项目的值,在我的情况下,该值始终为整数类型,我会label1.text=Convert.toInt32(ddlCategory.SelectedValue);
我得到了所选的值,但它始终是列表中的第一项。我把头发拉过来。 :(
答案 0 :(得分:4)
我怀疑你每次加载页面时都会运行列表加载代码,这会破坏列表,重新填充列表,并在选择检索代码运行之前自动选择第一项。
在Page_Load
:
if (!IsPostBack)
{
// Initial control population goes here
}
答案 1 :(得分:1)
数据绑定将重置控件的选定值,因此请确保在回发数据绑定之前检索所选值。