Member 12857356 Ответов: 4

То же самое значение повторяется, когда мы проверяем более одного chkbox


When i check more than one check box it repeat the same value like below
 
when i clik 1 means it seems 1
 
when i click 1 and 2 means it seems 1,1,2 


Что я уже пробовал:

Это мой код
protected void cckk_SelectedIndexChanged(object sender, EventArgs e)
  {
      string val = string.Empty;
      StringBuilder sb = new StringBuilder();
      foreach (ListItem it in cckk.Items)
      {
          if (it.Selected)
          {

              val += sb.Append(it.Value + ',');
              ViewState["vallue"] = val.Remove(val.Length - 1).ToString();

           }
      }
      string a1a = Convert.ToString(ViewState["vallue"]);
  }

ZurdoDev

Отладьте свой код и узнайте, что происходит.

Member 12857356

Когда я нажимаю один флажок, это означает, что он работает нормально. например, это похоже на 1

Но когда я нажимаю более одного флажка, это означает, что он выглядит как 1,1,2

ZurdoDev

Отладьте свой код. Вы можете точно наблюдать, что происходит при выполнении каждой строки. Вы найдете проблему очень, очень быстро.

Member 12857356

например

1 2 3 4 5 это все флажки


Когда я нажимаю 1, кажется, что 1
Когда я нажимаю 1, 2 и 3, это означает, что это похоже на 1,1,2,1,2,3

ZurdoDev

Вы продолжаете объяснять, что вы видите на выходе. Вы понимаете, что такое отладка? Это означает поставить точку останова в первой строке кода, а затем шагать по коду по одной строке за раз и проверять, каковы значения в ваших переменных. Если вы сделаете это, вы найдете ответ быстрее, чем сколько времени вы потратили здесь, прося нас сделать это за вас.

Member 12857356

Я знаю, что такое отладка, сэр.. Я сделал отладку, я вижу только значения там

Hemant Singh Rautela

Почему вы используете ViewState ???

4 Ответов

Рейтинг:
28

Karthik_Mahalingam

попробовать это

protected void cckk_SelectedIndexChanged(object sender, EventArgs e)
        { 
            List<string> lst = new List<string>();
            foreach (ListItem it in cckk.Items)            
                if (it.Selected)                
                    lst.Add(it.Value);

            ViewState["vallue"] = string.Join(",", lst);
            string a1a = Convert.ToString(ViewState["vallue"]);
        }


Рейтинг:
2

Patrice T

ViewState["vallue"] = val.Remove(val.Length - 1).ToString();

val это уже струна !

Когда вы не понимаете, что делает ваш код или почему он делает то, что делает, ответ таков: отладчик.
Используйте отладчик, чтобы увидеть, что делает ваш код. Он позволяет вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения, это невероятный инструмент обучения.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.

Цитата:
Я знаю, что такое отладка, сэр.. Я сделал отладку, я вижу только значения там

Очевидно, вы не отлаживали свой код и не знаете, как использовать отладчик.


Рейтинг:
0

Ramesh Kumar Barik

Перед добавлением значения в поле ViewState of selected установите флажок, существует ли это выбранное значение в этом поле viewstate или нет. Если выбранное значение флажка существует в состоянии просмотра, то не добавляйте это значение в это состояние просмотра.

Еще раз проверьте, снят ли выбранный флажок, а затем удалите значение флажка из состояния просмотра.


Рейтинг:
0

Richard Deeming

Если вы отладите свой код, проблема станет очевидной:

val += sb.Append(it.Value + ',');

Для каждого проверенного элемента вы:
  1. Возьмите значение проверяемого элемента и добавьте запятую;
  2. Добавьте значение и запятую к StringBuilder;
  3. Преобразование StringBuilder К String, и добавить его к val;

Итак, если вы проверили "1", " 2 " и " 3":
  1. sb: "1,";
    вал: "1,"
  2. СБ: "1,2,";
    Вэл: "1," + "1,2," = "1,1,2,";
  3. СБ: "1,2,3,";
    Вэл: "1,1,2," + "1,2,3," = "1,1,2,1,2,3,";


Используйте код, который karthik разместил в Решение №2[^] чтобы получить правильный результат.