【问题标题】:How to Check if ListBox is Empty on Client-Side如何在客户端检查 ListBox 是否为空
【发布时间】:2013-01-22 18:10:17
【问题描述】:

我创建了一个javascript confirm,如下所示。

<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

【问题讨论】:

  • 能否请您发表评论,告诉我为什么要 DownVote ?投反对票很容易,但回答或留下建设性评论不是,哈?
  • 你可以使用这个方法:MSDN它在你的控件重新加载时运行。
  • 为什么投反对票?我看不出这个问题有什么问题。 +1
  • @Thousand 好吧,“我如何从 ASP 代码隐藏中运行 javascript 代码”是一个非常常见的问题,有很多有据可查的答案。这表明没有任何研究工作,也不比随处可见的例子更难。
  • @Servy 他做了:“我需要测试 ListBox.Items 控件是否为空”

标签: c# javascript asp.net


【解决方案1】:

查看link 了解如何从后面的代码执行 javascript

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

注意:您必须在aspx页面中添加一个ScriptManager控件。

【讨论】:

  • 我明白了... 可以使用 ScriptManager 和 PopUp 类型的 messagebox 与“是/否”或 Yes/Cancel 吗?
  • 可以,RegisterStartupScript中可以写任何js代码。在这种情况下,显示一个确认对话框。
【解决方案2】:

对于您的 javascript,您可以在没有代码隐藏的情况下获取值(假设脚本代码在同一页面中,以便获取客户端 ID):

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

同样,您不会使用 javascript 在服务器端进行验证。您发布的代码将返回 ListBox 中的所有项。这是获取选定项数量的一种方法(我正在使用基于 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?中代码的修改版本

【讨论】:

  • 您好!谢谢你回答我。但我不想从 ListBox 中选择任何值,我只想知道它是否为空;S
  • 是的,这就是我的hasValue boolean 告诉你的。其他代码也不会告诉您选择的值,它会告诉您选择了多少项目。
  • @Ghaleon 我想我明白你在做什么。我更新了我的答案以显示如何通过 Javascript 获取所选项目。这不需要回发或代码隐藏。如果您需要自定义验证,您可能仍需要运行代码隐藏逻辑。
  • @Ghaleon 有没有帮助?
  • 我以其他方式做到了,因为我不明白它是如何工作的。对此感到抱歉,感谢您帮助我 =-)
猜你喜欢
  • 2016-05-19
  • 2011-10-23
  • 2015-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
相关资源
最近更新 更多