2010-02-17 85 views
5

我在GridView控件的模板列中有一個DropDownList。 GridView綁定到一個對象列表。每個對象都有一個int類型的屬性,它對應於DropDownLists ListItems中的一個值。我可以通過將DataBind事件添加到下拉菜單來以編程方式設置選定的項目,但是我想知道是否有方法通過使用aspx標記中的代碼塊來設置所選項目。如何在標記中設置DropDownList選定項目?

回答

9

在本設計中謹慎的,你可以在標記選擇。以這種方式創建網格下拉菜單意味着對於下拉菜單中的每個選項,您將重複每一行。如果您的行數超過了幾行或多個下拉列,這可以非常快速地將頁面大小添加到MB以上,這會降低性能。

<asp:DropDown id="dropDown1" SelectedValue='<%# Eval("Key") %>' runat="server"/> 

上下文結合標籤也讓你調用的頁面/用戶控件作爲公共/保護功能:

話雖這麼說,你可以在標記使用上下文綁定腳本標籤做到這一點:

<asp:DropDown id="dropDown1" SelectedValue='<%# myFunction((int) Eval("Key")) %>' runat="server"/> 

public string myFunction(int key){ 
    return key.ToString(); 
} 

作爲替代產生相同的重複HTML的每一行,你可以使那些下拉菜單autocompleters或創建一個隱藏的下拉,只有呈現HTML一次,然後用了jQuery或JavaScript來填充所有網格下拉客戶端側。

0

您可以在標記通過設置:

<ItemTemplate> 
<asp:DropDown .. SelectedValue='<%# Eval("Key") %>' /> 
</ItemTemplate> 

取決於你如何將其綁定,您使用的數據源控件?無論如何,我已經注意到這種方法可能會嘗試在項目被綁定之前設置該值,並且可能會引發異常。不知道,發生過一次,認爲可能是這樣,但我應該更深入地研究它。

HTH。

0

你也可以使用的RowDataBound事件GridView或通過@布賴恩

描述
相關問題