2010-04-13 66 views
0

正確選擇的項目我有這樣的代碼:ASP:RadioButtonList的不設置負載

<asp:RadioButtonList ID="rblExpDate" runat="server" > 
    <asp:ListItem Selected="True" Text="No expiration date"></asp:ListItem> 
    <asp:ListItem Text="Expires on:"></asp:ListItem> 
</asp:RadioButtonList> 

,我想是永遠,在頁面加載,以紀念第一個選項(「無截止日期」 )。 然而,如果用戶標記了第二個選項,並重新加載,第二個選項被選中,即使我做這個頁面加載:

rblExpDate.Items[0].Selected = true; 
rblExpDate.SelectedIndex = 0; 

感謝您的幫助!

+0

您能否請您加入隱藏頁面? – 2010-04-13 08:31:16

+0

我不能 - 這是一個巨大的頁面。抱歉。 – Nir 2010-04-14 10:54:47

回答

0

我選擇的解決方案是在Javascript(mootools的):

window.addEvent('domready', function() { 
     $("rblExpDate_0").checked = true; 
}); 

(我放棄了對.NET側)

感謝您的幫助@Slavo和@Daniel戴森。

0

您確定您的代碼不在回發檢查中嗎?

 if (!Page.IsPostBack) 
     { 
      rblExpDate.Items[0].Selected = true; 
      rblExpDate.SelectedIndex = 0; 
     } 

更重要的是,這聽起來像一個奇怪的要求,聽起來不太可用。爲什麼有一個選項可用,如果你總是要覆蓋它?

+0

丹尼爾,事情是,如果第二個選項被選中,我啓用日期選擇器 - 要求是如果選擇第一個選項將禁用日期選擇器。 – Nir 2010-04-13 09:24:59

+0

該代碼不在回發檢查中。 – Nir 2010-04-13 09:32:24

+0

在這種情況下,啓用或禁用PreRender事件中的日期選擇器。然後進行任何你想改變狀態的更改 – 2010-04-13 09:57:30

0

最可能發生的是在Page_Load上執行的代碼首先運行,設置所需的元素。之後,RadioButtonList的SelectedIndexChanged事件觸發並從ViewState獲取選定的項目,覆蓋代碼所做的事情。不過,您必須調試。

+0

ViewState在頁面加載期間被檢查,所以這在這裏不太可能是問題。 Nir正在設置值OnLoad,這是在頁面加載和ViewState已被選中之後 – 2010-04-13 09:00:27

1

通話body標籤

<body bottomMargin=0 leftMargin=0 topMargin=25 onload=aa() rightMargin=0> 

的onload事件此功能的head標籤

<script language=Javascript> 
function aa() {document.forms[0].item('rblExpDate')[1].disabled=true;} 
</script> 
1

我有同樣的問題下。我發現我的radioButtonList仍然保留了以前的所有ListItems selected property。基本上,之前選擇的RadioButtonList的最後一項將顯示爲您頁面上選擇的項目。因此,就您的情況而言,一旦用戶選擇第二個項目,即使您的代碼將第一個項目設置爲選定項目,該項目仍具有屬性checked=checked。看看你的查看頁面源代碼,你會看到兩個ListItems被選中。

我的解決辦法:在PagePostBack設置其他ListItem Selected propety值爲false這樣的:

​​

這將刪除2號項目的Checked屬性。

希望幫助別人。也許有人有更好的辦法。