Проверьте, проверяется ли флажок или не - ASP.NET

У меня есть следующий код:

(some.aspx.cs)

        if(Page.IsPostBack)
        {
        bool apple2 = false;
        bool pizza2 = false;
        bool orange2 = false;
        if (apple.Checked)
            apple2 = true;
        if (pizza.Checked)
            pizza2 = true;
        if (orange.Checked)
            orange2 = true;
        }

(some.aspx)

     <tr>
     <td>Food:</td>
     <td>Apple <input type="checkbox" name="food" id="apple" value="apple" runat="server" />Pizza <input type="checkbox" name="food" id="pizza" value="pizza" runat="server" />Orange <input type="checkbox" name="food" id="orange" value="orange" runat="server" /></td>
 </tr>

Теперь, я отправляю Логические переменные в базу данных SQL. Проблема только со снятыми флажками. Я имею в виду, когда Вы проверяете некоторые флажки, это отправляет его как верный (и правильно), но когда я снял флажок с ними, это остается (верным) тем же.

Дополнение: Почему слишком мало? вот является запрос... ничем специальным здесь

string q = string.Format(@"UPDATE tblUsers SET ......., apple='{8}', orange='{9}' WHERE id='{10}'", ...., apple2, orange2, id);
lib.sql_query(q); // using my sql library...

тип данных является битом.... я попробовал также строкой..., но никаким успехом

P.S. - я также попробовал Запросом. Форма ["яблоко"] и снятие флажка работала..., но к сожалению проверка не сделала..., когда я проверяю флажок, это бросает меня ошибка:

Conversion failed when converting the varchar value 'on' to data type bit. 

Кто-то?

7
задан 31 August 2011 в 11:29
поделиться

4 ответа

Итак, после долгого времени комбинаций и прочего все заработало ... Без каких-либо javascripts и скрытых полей ... это код .cs

        bool apple2 = (Request.Form["apple"] == "on") ? true : false;
        bool orange2 = (Request.Form["orange"] == "on") ? true : false;
        bool pizza2 = (Request.Form["pizza"] == "on") ? true : false;
7
ответ дан 7 December 2019 в 05:18
поделиться

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

Одним из методов было бы иметь скрытое поле, которое заполняется с помощью javascript флажка.

1
ответ дан 7 December 2019 в 05:18
поделиться

Во-первых, я бы привел в порядок ваш код на в начале операторы if не нужны:

if (Page.IsPostback)
{
    bool appleSelected = apple.Checked;
    bool pizzaSelected = pizza.Checked;
    bool orangeSelected = orange.Checked;
}

Пробовали ли вы использовать класс CheckBox вместо ввода?

<asp:CheckBox id="apple" value="apple" runat="server" Checked="True|False" />
<asp:CheckBox id="pizza" value="pizza" runat="server" Checked="True|False" />
<asp:CheckBox id="orange" value="orange" runat="server" Checked="True|False" />
0
ответ дан 7 December 2019 в 05:18
поделиться

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

Поскольку в вашем коде есть инструкция обновления SQL, попробуйте преобразовать bool в 0 или 1.

Int16 iApple = (apple2) ? 1 : 0;
Int16 iOrange = (orange2) ? 1 : 0;
string query = string.Format(@"UPDATE tblUsers SET ......., apple='{8}', orange='{9}'    WHERE id='{10}'", ...., iApple, iOrange, id);
lib.sql_query(q);
0
ответ дан 7 December 2019 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: