как привести System.String к System.Web.UI.WebControls.CheckBox в asp.net? - PullRequest
0 голосов
/ 17 октября 2011

Я новичок в asp.net, я хочу привести System.String к System.Web.UI.WebControls.CheckBox в asp.net?

Я разрабатываю один торговый сайт. В этом у меня есть некоторые элементы управления флажок. И я хочу, чтобы сохранить проверенное состояние каждого элемента управления флажок на моей веб-странице. Для этого я создал один объект данных динамически, и когда пользователь проверяет определенный элемент управления флажком, в этот раз я сохраняю имя флажка в объекте данных в виде строкового типа данных. И в зависимости от имени флажка, я хочу проверить конкретный флажок управления на определенной странице моего веб-сайта. вот почему мне нужно выше конверсии.

Есть ли другое решение в этой ситуации?

спасибо.

Ответы [ 4 ]

0 голосов
/ 17 октября 2011

Я решил эту проблему, используя следующий метод -

Dim chkname as string = dt.Rows(0).Item("ChkBoxName")
Dim chk As CheckBox = CType(Page.FindControl(chkname), CheckBox)
chk.Checked = True
0 голосов
/ 17 октября 2011

Я думаю, вам нужно использовать checkbox list, и вы можете использовать значение Item.value для хранения в вашей таблице данных, поскольку его будет легко поддерживать.

Я использовал это

foreach (ListItem li in chbCategory.Items)
            {
                DataRow dr = dt.NewRow();

                if (li.Selected == true)
                {
                    dr["Id"] = li.Value;
                    dr["Status"] = 1;
                }
                else
                {
                    dr["Id"] = li.Value;
                    dr["Status"] = 0;
                }
                dt.Rows.Add(dr);
            }

для хранения выбранных элементов в datatable.

0 голосов
/ 17 октября 2011

Вы не можете привести string к System.Web.UI.WebControls.CheckBox, поскольку они несовместимы.

Вам необходимо получить имя флажка из базы данных и найти его на своей странице.

Предполагая, что вы прочитали из базы данных имя "chkProduct", вам нужно сделать что-то вроде следующего, например:

(this.FindControl("chkProduct") as CheckBox).Checked=true;

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

Но в действительности вам не нужно ничего «находить», так как ваш флажокэлементы управления, вероятно, будут определены в вашей разметке (если вы не связываете их динамически).Если они определены в разметке, вы можете просто использовать оператор if / else:

if(name=="chkProduct")
  chkProduct.Checked=true;
if(name=="chkColorRed")
 chkColorRed.Checked=true;

И так далее ...

0 голосов
/ 17 октября 2011

свяжите свой флажок с элементами данных

...