2013-02-15 73 views

回答

0

你的意思是這樣的嗎?

DropDownList1.SelectedIndex = -1; 

這就是通常從代碼隱藏的方式。 ETA:我現在看到你在說什麼了。我擔心我不知道如何從服務器端完成。你可以在服務器端做的所有事情都是控制渲染。據我所知,即使您呈現此代碼:

<select id="testSelect" selectedIndex="-1"> 

...它仍然出現與頂部選項似乎被選中。

看起來好像只有在渲染後明確將其設置爲-1後,它纔會顯示爲絕對沒有選中的內容。它出現就好像它不能在HTML中聲明一樣。

如果您可以找到一種方法在HTML中編寫標籤,使其在加載時出現這種方式,那麼您可以在代碼隱藏(使用.AddAttribute()或類似方法)中調整渲染,但是如果無法使用一個聲明,它需要JavaScript。

(你當然可以寫一個jQuery片斷改變所有的下拉菜單來的selectedIndex = -1,但你會想到這一點!)

+0

它不工作,始終停留在索引0 – christiangobo 2013-02-15 14:38:46

+0

會發生什麼?你希望發生的事情不會發生,確切地說是什麼? – 2013-02-15 14:40:31

+0

請看這個http://jsfiddle.net/eL8sn/ – christiangobo 2013-02-15 14:41:18

0

如果你在的Page_Load事件它結合它並回發(AutoPostBack='True')。它會簡單地重新綁定索引被改變

if (!IsPostBack) 
{ 
    BindDropDownList1();  
} 

(或)

以往時間如果上述溶液多申「T工作嘗試添加一個空項,如下所示:

this.myDropDownList.Items.Add(new ListItem("Select...", "")); 
+0

不,我不想添加一個新的ListItem,請看看jQuery是如何工作的http://jsfiddle.net/eL8sn/ – christiangobo 2013-02-15 14:55:55

+0

JQuery是一個客戶端代碼,但你試圖從codebhind這是服務器端。必須這樣做,或者嘗試使用正常的html控件併爲此使用ajax。 – coder 2013-02-15 14:58:25

+0

SelectedIndex是代碼隱藏或客戶端的相同屬性,當.NET渲染DropDownList時,它將像普通的html控件一樣呈現。 – christiangobo 2013-02-15 15:05:20

0

你可以做到這一點

串selectStr = 「SELECT」; string allStr =「ALL」

ListItem allLI = new ListItem(allStr,allStr);
ListItem selectLI = new ListItem(selectStr,selectStr);

DropDownList.Items.Add(selectLI); DropDownList.Items.Add(allLI);

//代碼,以填補該查詢返回

列表DropDownList的

DropDownList.SelectedValue = selectStr;

+0

感謝您的問題「無需添加新的ListItem」 – christiangobo 2013-02-16 19:23:58