下午好,
我有一个 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 :(
}
}