【问题标题】:ASP.net checkboxlist not getting checked valuesASP.net checkboxlist 没有得到检查值
【发布时间】:2011-06-20 10:11:54
【问题描述】:

我已经检查了所有答案,但我的问题似乎不同 - 我有两组复选框列表。在启动时,我禁用了第二组中的所有复选框。

rotected void exchList_OnDataBound(object sender, EventArgs e)
{
    for (int i = 0; i < exchList.Items.Count; i++)
    {
        exchList.Items[i].Attributes.Add("onclick", "gridCallback();");
        exchList.Items[i].Enabled = false;
    }//end for
}//end exchList_OnDataBound()

选中第一组中的一个框会启用另一个框。这是通过 jquery 完成的。

$('#<%= exchList.ClientID %> input:checkbox').each(function() {
            $label = $(this).parent().children("label").text();
            i = 0;
            while(i < $jsonData.xxx.length)
            {
                if ($(this).attr('disabled'))
            {
                $(this).removeAttr('disabled');
            $(this).attr('checked', 'checked');
                }//end if
            else
            {
                $(this).removeAttr('checked');
                $(this).attr('disabled', 'disabled');
            }//end else
                i++;
            }//end while
    });

当这些框被选中时,在回调期间它不会被检测到。

protected void productGrid_OnCustomCallback(object sender,
                        DevExpress.Web.ASPxGridView.ASPxGridViewCustomCallbackEventArgs e)
{
    String markets = "", exchs = "";
    int i;
    for (i = 0; i < marketList.Items.Count; i++)
    {
        if (marketList.Items[i].Selected)
            System.Diagnostics.Debug.WriteLine(marketList.Items[i].Text);
    }//end for

    for (i = 0; i < exchList.Items.Count; i++)
    {
        System.Diagnostics.Debug.WriteLine(exchList.Items[i].Text + " " + exchList.Items[i].Enabled);
    }//end for
}//end productGrid_OnCustomCallback()

即使明确选中了复选框,它们也始终不会被选中。查看萤火虫表明,因为我禁用并启用了列表项,所以复选框由 DIV 封装,这可能是导致问题的原因。我在没有禁用/启用的情况下对其进行了测试,并且 HTML 没有围绕复选框的 DIV,现在它可以正常工作。如何从列表项中获取 DIV 内的复选框选中值?

【问题讨论】:

    标签: jquery asp.net checkboxlist


    【解决方案1】:

    如果我没记错的话,这是 ASP.net 控件的某种错误,如果在页面加载时禁用复选框,它总是返回未选中状态,即使您启用它并在客户端选中它也是如此。
    解决此问题的方法是发送从服务器端启用的复选框,并在必要时在客户端加载时禁用它们。

    恕我直言,一个更受欢迎的解决方案当然是根本不使用 ASP.net 控件,因为我发现它们过于复杂和超重。但是嘿-这只是我...

    【讨论】:

    • 但是如果不使用 asp.net checkboxlist,我还能如何生成一个复选框列表?我不想使用 javascript ...
    • 好吧,如果您不想使用客户端代码在客户端生成控件,那么...是的,您几乎被服务器端控件卡住了 :)。就我个人而言,我使用了很多 javascript(实际上是 jQuery),它有许多控件,这些控件更简单、更易于使用和高效,然后是 asp.net 控件。我建议你给它一个机会......
    【解决方案2】:

    试试我使用 checkboxlist 的这些代码。它使用 2 页。没有 jscript 代码..希望这会有所帮助。 第 1 页 cs 代码。

    Session["checkedarray"] = new string[] { "1.0", "2.0", "3.0" };
                {
                    {
                        string[] checkedlist = new string[17];
                        int a = 0;
    
                        for (int i = 0; i <= 16; i++)
                        {
                            if (cblist1.Items[i].Selected == true)
                            {
                                checkedlist[a] = cbllist1.Items[i].ToString();
                                a = a + 1;
                            }
                        }
    
                        Session["checkedarray"] = checkedlist;
                        Session["numofchecked"] = a;
                        Response.Redirect("ReportPage2.aspx");
                    }
                }
    

    第二页cs代码。

    protected void Page_Load(object sender, EventArgs e)
    {
        string[] arr = (string[])Session["checkedarray"];
    
        for (int i = 0; i < int.Parse(Session["numofchecked"].ToString()); i++)
        {
            ColcbList2.Items.Add(arr[i].ToString());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-08-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 2011-03-30
      相关资源
      最近更新 更多