【问题标题】:problem with drop down list下拉列表的问题
【发布时间】:2023-03-25 08:56:01
【问题描述】:

我有一个下拉列表控件,其中填充了项目和一些代码来获取当前选定的项目值。问题是我只得到列表中第一个项目的值,而不管实际选择了什么项目。

这是我填充下拉列表的代码:

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);

我得到了选定的值,但它始终是列表中的第一项。我正在为此拔头发。 :(

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    我怀疑您在每次页面加载时都在运行列表加载代码,这会破坏列表、重新填充列表并在您的选择检索代码运行之前自动选择第一个项目。

    在Page_Load中使用这个结构:

    if (!IsPostBack)
    {
        // Initial control population goes here
    }
    

    【讨论】:

    • 这让我很受打击,直到我真正坐下来弄清楚页面的生命周期——事件名称听起来与 WinForms 中的相同,但非常不同。 msdn.microsoft.com/en-us/library/ms178472.aspx
    • 我想你试试这个解决方案。因为如果您在页面加载中调用该函数,它每次都会重置值。所以尝试使用 IsPostBack
    【解决方案2】:

    数据绑定将重置控件的选定值,因此请确保在回发数据绑定之前检索选定值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-28
      • 2012-06-19
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多