0

下午好,

我有一个 DropDownList,我在 OnPageLoad 后面的代码中设置了 Enabled = false。后来当我按下页面上的保存按钮时,我尝试提取数据,我从禁用的 DropDownList 中得到一个奇怪的值,并从启用的 DropDownList 中得到正确的值。

我的问题是,如何禁用 DropDownList OnPageLoad 以便用户无法更改数据但仍会修改其代码隐藏文件中的数据并在需要时提取它?我看到启用的属性设置了只读标志,我尝试在修改它的数据之前启用下拉菜单,但它不起作用。有任何想法吗?

后面的代码:

    protected void Page_Load(object sender, EventArgs e)
    {  
        for (int i = 1; i <= Convert.ToInt32(txtNumPrizes.Text.Trim()); i++)
        {
            DropDownList dl = new DropDownList();
            bool disableRow = true; //example

            dl.ID = "DDPrize" + i.ToString();
            dl.DataSourceID = "SqlDataSource1";
            dl.DataTextField = "PrizeName";
            dl.DataValueField = "PrizeID";
            Panel1.Controls.Add(dl);
            dl.DataBind();
            if (disableRow == true)
            {
                dl.Enabled = false;
            }

        } 
    }

    protected void Page_PreRender(object sender, EventArgs e)
    { 
        for (int i = 1; i <= Convert.ToInt32(txtNumPrizes.Text.Trim()); i++)
        {
            DropDownList dd = (DropDownList)Panel1.FindControl("DDPrize" + i.ToString());

            //disable the row if prize was already assigned to a player
            int place = 1; //example

            int selectedValue = DropDownSelect(i, place, GetTournamentID());
            dd.SelectedValue = selectedValue.ToString(); //sets properly here

        } 
    }
        protected void btnSave_Click(object sender, EventArgs e)
        {
            for (int i = 1; i <= numPrizes; i++)
            {
                DropDownList dd = (DropDownList)Panel1.FindControl("DDPrize" + i.ToString());
                string key = dd.SelectedValue;//here is where we can't get the selected value :(
            }

        }
4

1 回答 1

1

如果您在代码中禁用它,那么当它呈现时,他们无法更改选择。SelectedItem 可能为 null/Nothing,具体取决于您是否将任何项目设置为 Selected=true。

使用无法使用的下拉菜单[对我来说,无论如何]没有多大意义。当然,除非它正在等待回发以根据某些标准启用它。

您可以在页面加载时使用 jQuery 禁用它,而 .NET 不会在意。无论如何,它都会让您访问该值,或者缺少它,这是您可能缺少的。同样,如果您没有在 Web 表单或代码中设置 SelectedItem,您仍然会遇到没有 SelectedItem 的问题。

发布代码将帮助我们进一步帮助您:)

于 2013-07-05T21:29:31.610 回答