Как правильно преобразовать логические значения?

#c# #asp.net #type-conversion

Вопрос:

Я работаю над проектом по администрированию пользователей в ASP.NET Веб-приложение (платформа 4.8), и я подумал, что мое представление сетки было бы более эффективным, если бы я превратил некоторые столбцы, которые раньше были текстовыми полями, в флажки.

Теперь, когда я собираюсь это сделать, он выдает мне: «Строка не была распознана как допустимое логическое значение». когда я преобразовал элементы. Так что же я делаю неправильно, преобразуя эти логические значения?

gvTestUsers_RowCommand

 protected void gvTestUsers_RowCommand(object sender, GridViewCommandEventArgs e)
{
    try
    {
        if (e.CommandName.Equals("AddNew"))
        {
            int tbl_users_key = 0;

            TextBox myTxt;
            CheckBox myCheck;

            myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtNamefooter"));
            string Name;
            Name = myTxt.Text;

            string CostCenter;
            myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtCostCenterfooter"));
            CostCenter = myTxt.Text;

            string Employee;
            myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtEmployeefooter"));
            Employee = myTxt.Text;

            Boolean FootPlate;
            myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("CheckFootPlateFooter"));
            FootPlate = Convert.ToBoolean(myCheck.Text);

            Boolean WirstCord;
            myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("CheckWirstCordFooter"));
            WirstCord = Convert.ToBoolean(myCheck.Text);

            Boolean Excluded;
            myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("txtExcludedfooter"));
            Excluded = Convert.ToBoolean(myCheck.Text);

            string Comment;
            myTxt = ((TextBox)gvTestUsers.FooterRow.FindControl("txtCommentfooter"));
            Comment = myTxt.Text;


            string sMsg;

            sMsg = "";


            bool btest = fcEditTBL_USERS(tbl_users_key, Name, CostCenter, Employee, FootPlate, WirstCord, Excluded, Comment, ref sMsg, 0);


            if (btest == false)
            {
                lblErrorMessage.Text = sMsg;
                lblSuccessMessage.Text = " ";
                return;
            }

            PopulateGridView();

            lblSuccessMessage.Text = Name   " Was Added To Record.";
        }
    }
    catch (Exception ex)
    {
        lblSuccessMessage.Text = "";
        lblErrorMessage.Text = ex.Message;
    }
}
 

Комментарии:

1. У флажков есть свойство с именем Checked. это уже логическое значение и возвращает проверенное состояние флажка

Ответ №1:

Этот:

 Boolean FootPlate;
myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("CheckFootPlateFooter"));
FootPlate = Convert.ToBoolean(myCheck.Text);
 

должно быть:

 Boolean FootPlate;
myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("CheckFootPlateFooter"));
FootPlate = myCheck.Checked;
 

Вам не нужно конвертировать (.Text-это текст, связанный с флажком, а не значение true/false, если флажок установлен или нет)
.

Комментарии:

1. Большое спасибо, теперь я это понимаю. Отличное и простое объяснение!

Ответ №2:

Согласно вашему коду, следующий код неверен.

 Boolean Excluded;
                    myCheck = ((CheckBox)gvTestUsers.FooterRow.FindControl("txtExcludedfooter"));
                    Excluded = Convert.ToBoolean(myCheck.Text); 
 

В соответствии с вашим идентификатором txtExcludedfooter, это значение текстового поля или флажок?

Нужно это исправить.

Комментарии:

1. Спасибо, да, это должен быть флажок. Но он все равно не хочет передавать подножку, шнур или исключенное значение