2010-03-05 37 views
2

我正在使用帶有成功填充列表的數據源的DropDownList。但是,我希望選擇其中一個項目,即值與當前請求的路徑和查詢匹配的項目。帶有DataSource的ASP.NET DropDownList不會選擇任何項目

ddlTopics.DataSource = pdc; 
ddlTopics.DataBind(); 
foreach (ListItem item in ddlTopics.Items) 
{ 
    item.Selected = item.Value.Equals(this.Page.Request.Url.PathAndQuery); 
} 

使用Visual Studio 2008中的調試器顯示,item.Selected在循環將成爲真正的只出現一次,但呈現select沒有option被選中。

任何想法?

+0

你能請張貼在瀏覽器中呈現的HTML?我遇到過一些與之前類似的事情,那會很有幫助。謝謝 – 2010-03-05 13:54:13

+0

@Mahesh Velaga:我很抱歉,我不能。然而,這並不令人感興趣,只是一個標準的「選擇」,有一堆「選項」的孩子。 – 2010-03-05 14:01:38

回答

2

使用

ddlTopics.SelectedValue = this.Page.Request.Url.PathAndQuery; 

    // Summary: 
    //  Gets the value of the selected item in the list control, or selects the item 
    //  in the list control that contains the specified value. 
0

ddlTopics.SelectedIndex屬性設置爲您希望選擇的項目的索引。

0

我一直使用

ddlTopics.SelectedIndex 

表明,一旦被選中,而不是單獨分配給該行。

0

這是我要做的事......

foreach (var itm in cboOffice.Items) { 
     if (itm.Value == Session("office")) { 
      itm.Selected = true; 
      break; //OR EXIT FOR 
     } 
    } 
2

你可以試試這個:

ddlTopics.SelectedIndex = ddlTopics.Items.IndexOf(ddlTopics.Items.FindByValue(this.Page.Request.Url.PathAndQuery)); 
+0

非常非常整齊。謝謝!編輯:看到Sorpigal有一個更優越的解決方案,所以我接受了她/他的代替。 – 2010-03-05 13:59:23

+0

這基本上就是.SelectedValue所做的設置,除了.SelectedValue會執行更多的錯誤檢查。 – Sorpigal 2010-03-05 14:03:58

+0

我使用SelectedIndex的主要原因是因爲當未找到該值時,SelectedValue引發ArgumentOutOfRange異常。當找不到索引時,SelectedIndex不執行任何操作。 – 2010-03-05 14:08:25

相關問題