如何在客户端检查ListBox是否为空

时间:2013-01-22 18:10:18

标签: c# javascript asp.net

我创建了一个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

2 个答案:

答案 0 :(得分:0)

对于您的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?

中代码的修改版本

答案 1 :(得分:0)

有关如何从代码

执行javascript的信息,请参阅此link
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控件。