1. 程式人生 > >Asp.net-不能在DropDownList中選擇多個項

Asp.net-不能在DropDownList中選擇多個項

        一個錯誤開啟了新的視角。

錯誤描述:

不能在DropDownList中選擇多個項。

錯誤原因:

我在一個頁面載入中想實現,如果此頁面要執行新增功能,就把dropdownlist繫結的資料中新增一項“請選擇”,並設為預設項。如果此頁面要執行修改功能,就把相應查出來的欄位值設為預設項。

我的錯誤思路是:載入的時候設一個預設值,如下:

this.ddlWorkStype.Items.Insert(0, new ListItem("請選擇", "0"));
this.ddlWorkStype.SelectedIndex = 0;

查出來資料,再重新設一下預設值:

this.ddlWorkStype.Items.FindByText(worksList[0].workstype).Selected = true;  //設定預設類別

從邏輯上來看,這個是沒問題的。But,報開頭的錯誤,我以為資料出問題了,有重複的資料,因此把資料庫中的重複資料都進行了修改,依舊報錯。百思不得其解。請來亮亮調錯。才知道原因所在。

因為我設了兩次預設值,而ddl控制元件的機制是,它不會自動取消上一個設定的預設值,但是它又不允許出現兩個預設值,於是就報錯了。

兩種方法解決問題:

1、只設置一次預設值,規避錯誤,不要去觸碰這個機制。

2、想多次設定預設值,又不想它報錯,既然不能自動取消,那就手動取消好了。

this.ddlWorkStype.Items[0].Selected = false;

總結:

完事兒又試了一下我當初的想法,資料原因,把資料庫中整出重複資料,發現——它是不會報錯的,預設把第一次出現的資料設為了預設值。想法對不對,試過才知道。

一次錯誤,開啟了一個新的視角。要了解一下控制元件的執行機制。asp.net控制元件也是封裝好的,用程式碼寫出來的,它提供什麼樣的服務,細節還是得考慮一下的,這個需要慢慢積累,大家有沒有相關資料什麼的分享呢。