2010年9月1日 星期三

ListItem的SelectedIndex(ex:DropDownList顯示選取的Item)

在一些使用ListItemCollectin的控制項時常會遇到要將PostBack前選取的項目,在PostBack後將選取的值給標示出來
簡單說就是…
<select id="test1" name="test1">
<option value="1111" selected="selected">1111</option>
<option value="2222">2222</option>
</select>

在ASP.NET中如果DropDownList的DataSource是Bind一個DataTable的話,最常見到的方式是
DropDownList1.SelectedIndex = -1;
for(int i=0; i<DS.Tables[0].Rows.Count; i++)
{
if(DS.Table[0].["Value"].ToString() == DropDownList1.Item[i].Value)
{
DropDownList1.Item[i].Selected = true;
}
else
{
DropDownList1.Item[i].Selected = false;
}
}
千萬不要這樣做,這樣是會多做許多無謂的迴圈判斷,會拖垮效能的

比較好的方式,指需要一行就可以解決
DropDownList1.SelectedIndex = DropDownList1.Item.IndexOf(DropDownList1.Items.FindByValue("xxxx"));
雖然很多人應該都知道這樣的方法,但還是記下來,以免忘記。






沒有留言:

張貼留言

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。