我目前面臨一個問題。如何從asp.net複選框列表中獲取最新的選定值?如何從複選框列表中獲取最新的選定值?
通過循環複選框列表的項目,我可以獲得最高的選定索引及其值,但不希望用戶從低到高順序選擇複選框。那麼,如何處理呢?
是否有任何事件捕獲系統可以幫助我識別生成事件的確切列表項?
我目前面臨一個問題。如何從asp.net複選框列表中獲取最新的選定值?如何從複選框列表中獲取最新的選定值?
通過循環複選框列表的項目,我可以獲得最高的選定索引及其值,但不希望用戶從低到高順序選擇複選框。那麼,如何處理呢?
是否有任何事件捕獲系統可以幫助我識別生成事件的確切列表項?
如果我的理解是正確的,這是代碼我會使用:
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
int lastSelectedIndex = 0;
string lastSelectedValue = string.Empty;
foreach (ListItem listitem in CheckBoxList1.Items)
{
if (listitem.Selected)
{
int thisIndex = CheckBoxList1.Items.IndexOf(listitem);
if (lastSelectedIndex < thisIndex)
{
lastSelectedIndex = thisIndex;
lastSelectedValue = listitem.Value;
}
}
}
}
是否有任何事件捕捉系統,將幫助我找出產生該事件的確切列表項?
您使用CheckBoxList的事件CheckBoxList1_SelectedIndexChanged。當單擊列表的CheckBox時,將調用此事件,然後您可以檢查所需的任何條件。
編輯:
下面的代碼使您可以獲取用戶選擇的最後一個複選框指數。有了這些數據,用戶就可以得到最後選擇的值。
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
string value = string.Empty;
string result = Request.Form["__EVENTTARGET"];
string[] checkedBox = result.Split('$'); ;
int index = int.Parse(checkedBox[checkedBox.Length - 1]);
if (CheckBoxList1.Items[index].Selected)
{
value = CheckBoxList1.Items[index].Value;
}
else
{
}
}
不知道你,但作爲一個用戶,我不希望每次檢查複選框項目時都會回發頁面。
這是解決方案,我將與(jQuery的)去:
聲明表單上的一個服務器端的隱藏字段:
<asp:HiddenField ID="HiddenField1" runat="server" EnableViewState="true" />
再用鋼絲了客戶端的事件處理程序複選框存儲複選框點擊:
$('.someclassforyourcheckboxes').click(function() {
$('#HiddenField1').val($(this).attr('id'));
這是一個輕量級的機制,用於存儲單擊「最新」複選框的ID。而且您不必爲複選框設置autopostback = true並執行不必要的回發。
你不必使用jQuery--你可以使用普通的Javascript,但是,爲什麼還要做更多的工作? =)
然後,當你真的做回發(在提交按鈕點擊我假設),只需檢查隱藏字段的值。當然,除非你想回發每個複選框點擊,但我不能想象你想要這個(也許你正在使用UpdatePanel)的場景。
編輯
一個複選框列表的HTML看起來像這樣:
<input type="checkbox" name="vehicle" value="Bike" /> I have a bike
所以,你可以訪問下面三件事情:
車輛 = $(this).attr('name');
自行車 = $(this).attr('value');
我有一輛自行車 = $(this).html();
如果你試圖訪問數據綁定值,嘗試第二種方法。
試試看。
其實我幾天前正在使用Coolite dropdownlist。該控件有一個名爲SelectedItems的屬性,它是根據選擇順序的selecteditem的數組。我在asp.net複選框列表中查找類似的內容。 – 2010-09-07 01:42:42
另一件事是,我使用多選的checkboxlist和複選框是從數據庫中的數據綁定。所以使用JavaScript,我只能跟蹤ID,但不知道我可以跟蹤爲該複選框填充的值。這個值不是複選框中顯示的文本,而是與複選框關聯的其他一些ID,我可以從我的代碼隱藏頁面中獲得該複選框。你可以請張貼一些示例代碼:你可以請張貼一些代碼來處理javascript的數據綁定複選框嗎? – 2010-09-07 01:50:08
@Masud你需要跟蹤什麼?複選框項目的值?如果是這樣,只需使用$(this).html(),它會給你複選框項的文本(即值) – RPM1984 2010-09-07 01:51:46
下面是爲您提供最新選定的CheckBoxList項目的代碼。
string result = Request.Form["__EVENTTARGET"];
string [] checkedBox = result.Split('$'); ;
int index = int.Parse(checkedBox[checkedBox.Length - 1]);
if (cbYears.Items[index].Selected)
{
//your logic
}
else
{
//your logic
}
希望這會有所幫助。
最近您的意思是列表中最後一個複選框? – 2010-09-07 00:45:30
使用客戶端腳本,比如jQuery或其他來做到這一點... - http://jQuery.com/ – 2010-09-07 00:55:27