2013-01-22 43 views
0

我創建了javascript confirm,如下所示。如何檢查客戶端上的ListBox是否爲空

<script Type="Text/Javascript"> 

function CheckListBox(lvi) 
{ 
    if(lvi == "") 
    { 
     if(confirm("Are you sure?")) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 

</script> 

我需要測試,如果ListBox.Items控制是空的......我已經是我的aspx頁面上進行參考

<script language="javascript" type="text/javascript" src="/JS/confirm.js"></script> 

我想知道如何稱呼它我aspx.cs頁面上。 。 。因此,我可以通過parameter

string oi = Listbox_Clubes.Items.Count.ToString();//Its the parameter I want to pass 
+0

請問,請留下評論,告訴我爲什麼DownVote? 這很容易downvote,但回答或留下建設性的意見是不是,哈? – Ghaleon

+3

爲什麼downvotes?我沒有看到這個問題有什麼問題。 +1 – Thousand

+1

@Thousand Well,「我如何從ASP代碼隱藏中運行JavaScript代碼」是一個非常常見的問題,有很多有據可查的答案。這表明沒有研究工作,也沒有比遍佈各處的例子更難。 – Servy

回答

0

對於您的JavaScript,就可以得到價值沒有代碼隱藏(假設腳本代碼是在同一頁上,以獲取客戶端ID):

<script> 
    function ClickListBox() { 
     if ($("#<%= Listbox_Clubes.ClientID %>").val() === null) { 
      if (confirm("Are you sure?")) { 
       return true; 
      } 
      else { 
       return false; 
      } 
     } 
    } 
</script> 

同樣,你不使用JavaScript在服務器端驗證。您發佈的代碼將返回列表框中的全部項目。這裏是一個辦法讓選擇項目數的計數(我基礎上,OP代碼示例使用.ToString()):

string oi = Listbox_Clubes.Items.Cast<ListItem>().Where(i => i.Selected).Count().ToString(); 

然而,沒有任何理由,你爲什麼會得到這個值,將它傳回給客戶端進行驗證(聽起來就像你想在你的文章中做的那樣)。主要是因爲這涉及到後置和客戶端驗證,其性質應該在回退前進行。此外,即使您有客戶端驗證,您仍然需要進行服務器端驗證。

相關:

bool hasValue = Listbox_Clubes.SelectedItem != null; 

.SelectedItem返回所選項目在列表控件的最低指標:在代碼隱藏,你可以如果有什麼被選中的測試,看看。當沒有選擇任何東西時,這個值是null ...所以你知道如果該值不是null,那麼至少選擇了一個項目。

如果您想要求他們至少選擇一個項目,則可以使用RequireFieldValidator並讓它處理兩個驗證。如果你對ASP.NET驗證器沒有太多的瞭解,那將是一件好事情。

這聽起來像你可能應該閱讀更多關於客戶端驗證和服務器端驗證以及如何使用它們...因爲它似乎就像你在混合它們。

計數代碼的代碼ASP:ListBox Get Selected Items - One Liner?

+0

你好!謝謝你回答我。但我不想從ListBox中選擇任何值,我只想知道它是否爲空; S – Ghaleon

+0

是的,這就是我的'hasValue'布爾值告訴你的。其他代碼也不會告訴您選定的值,它會告訴您選擇了多少個項目。 – MikeSmithDev

+0

@Ghaleon我想我明白你在做什麼。我更新了我的答案,以顯示如何通過Javascript獲取所選項目。這不需要回發或代碼隱藏。如果您需要自定義驗證,您可能仍然需要運行代碼隱藏邏輯。 – MikeSmithDev

0

修改後的版本請參見本link對於如何從代碼中執行後面

protected void Page_Load(object sender, EventArgs e) 
{ 
    ScriptManager.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "CheckListBox(" + Listbox_Clubes.Items.Count.ToString() + ");", false); 
} 

注意的javascript:你必須在aspx頁面中添加ScriptManager控件。

+0

我看到...有可能使用'ScriptManager'和PopUp類型的'messagebox'與'Yes/No'或'Yes/Cancel'? – Ghaleon

+0

是的,您可以在RegisterStartupScript中編寫任何js代碼。在這種情況下,顯示一個確認對話框。 – phnkha

相關問題