在c# RadioButton中,字符串未被识别为有效的布尔值

本文关键字:识别 有效 布尔值 RadioButton 字符串 | 更新日期: 2023-09-27 18:14:46

我想从一个表单发送值到另一个表单,这意味着当我点击一个按钮,然后我想通过id列发送学生值到另一个表单。但是,当我想发送RadioButton值时,我得到了一个关于字符串的错误。

请注意,我不将RadioButton值保存为字符串,即男性或女性到数据库中。

下面是代码本身。

if (this.isupdate)
{
    DataTable dtStudentInfo =  GetAllStudentInfoById(this.StudentId);
    DataRow row = dtStudentInfo.Rows[0];
    tbID.Text = row["std_id"].ToString();
    tbName.Text = row["std_name"].ToString();
    tbFatherName.Text = row["std_f_name"].ToString();
    tbAddress.Text = row["std_address"].ToString();
    tbBatchNo.Text = row["std_batch"].ToString();
    tbBatchYear.Text = row["std_batch_year"].ToString();
    tbCNIC.Text = row["std_cnic"].ToString();
    tbMobNumber.Text = row["std_mob"].ToString();
    rbMale.Checked = (row["std_gender"] is DBNull) ? false : Convert.ToBoolean(row["std_gender"] = 1) ? true : false);
}

在c# RadioButton中,字符串未被识别为有效的布尔值

一个小小的打字错误会造成很大的影响。

Convert.ToBoolean(row["std_gender"] = 1)

应该是(这里不需要转换):

Convert.ToBoolean(row["std_gender"] == 1)

输入错误导致row["std_gender"]被设置为1,导致转换失败

Try

Convert.ToBoolean(row["std_gender"].ToString() == "1")

解决了…代码是对的……只是一个小错误,返回类型....

private object GetGender()
    {
        if (rbMale.Checked)
        {
            return (int)Gender.Male;
        }
        else if (rbFemale.Checked)
        {
            return (int)Gender.Female;
        }
        else
        {
            return (int)Gender.NoSelection;
        }
    }

只是将返回类型从object更改为int,并将性别的数据类型从varchar更改为int…下面是代码

private int GetGender()
    {
        if (rbMale.Checked)
        {
            return (int)Gender.Male;
        }
        else if (rbFemale.Checked)
        {
            return (int)Gender.Female;
        }
        else
        {
            return (int)Gender.NoSelection;
        }
    }