ASP.net checkboxlist не получает проверенные значения - PullRequest
2 голосов
/ 20 июня 2011

Я проверил все ответы, но моя проблема кажется другой - у меня есть два набора списка флажков.При запуске я отключаю все флажки из второго набора.

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()

Они не всегда проверяются, даже когда флажки четкопроверено.Просмотр firebug показывает, что, поскольку я отключил и включил элементы списка, флажки инкапсулированы DIV, и это может быть причиной проблемы.Я тестировал его без отключения / включения, и в HTML не было DIV, окружающего флажки, и теперь он работает правильно.Как я могу получить проверенное значение внутри DIV из списка элементов?

Ответы [ 2 ]

1 голос
/ 20 июня 2011

если я правильно помню, это какая-то ошибка элементов управления ASP.net, что если флажок отключен при загрузке страницы, он всегда возвращается как непроверенный, даже если вы включили его и отметили его на стороне клиента. Обходным путем для этого может быть отправка флажков, включенных на стороне сервера, и отключение их при необходимости при загрузке на стороне клиента.

ИМХО, предпочтительным решением было бы, конечно, вообще не использовать элементы управления ASP.net, так как я нахожу их слишком сложными и лишними. но это только я ...

0 голосов
/ 01 августа 2014

попробуйте эти коды, которые я использую, используя checkboxlist.он использует 2 страницы.Нет кода jscript .. надеюсь, это поможет.Код первой страницы 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());
    }
}
...