我在ASP.NET c#和MySQL数据库中工作。

在数据库表的doDate字段中,我可以具有三个值:


  
  空值
  注册
  2016-03-08
  


当字段doDate的值是:


  
  注册
  2016-03-08
  


禁用了TextBox txtdoDate,我已经尝试过:

    txtdoDate1 = dr["doDate"] == DBNull.Value ? "" : dr["doDate"] == "0000-00-00" ? "0000-00-00" : Convert.ToDateTime(dr["doDate"]).ToString("dd/MM/yyyy");

    if (txtdoDate1.ToString() != "")
    {
        txtdoDate.Text = txtdoDate1.ToString();
        txtdoDate.Enabled = false;
    }
    else
    {
        txtdoDate.Enabled = true;
    }


但是,当字段doDate的值为:


  注册


TextBox txtdoDate已启用且为空。

您能帮我解决问题吗?

提前致谢。

编辑#1

protected void loadsRecord()
{
    using (OdbcConnection cn =
    new OdbcConnection(ConfigurationManager.ConnectionStrings["ConnMySQL"].ConnectionString))
    {
        sql = @" SELECT ..... ; ";

        using (OdbcCommand command =
                new OdbcCommand(sql, cn))
        {
            try
            {
                command.Connection.Open();
                dr = command.ExecuteReader();

                while (dr.Read())
                {

                txtdoDate1 = dr["doDate"] == DBNull.Value ? "" : (dr["doDate"] == "0000-00-00" ? "0000-00-00" : Convert.ToDateTime(dr["doDate"]).ToString("dd/MM/yyyy"));

                if (txtdoDate1.ToString() != "")
                   {
                      txtdoDate.Text = txtdoDate1.ToString();
                      txtdoDate.Enabled = false;
                   }
                   else
                   {
                      txtdoDate.Enabled = true;
                   }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                command.Connection.Close();
            }
        }
    }
}

最佳答案

这是正确的行为,因为您正在使用以下if语句

if (txtdoDate1.ToString() != "")
{
    txtdoDate.Text = txtdoDate1.ToString();
    txtdoDate.Enabled = false;
}
else
{
   txtdoDate.Enabled = true;
}


dr["doDate"] == "0000-00-00"时,存储在txtdoDate中的值为"0000-00-00",而不是txtdoDate1.ToString() != ""。您必须像这样修改if语句中的条件:

if (txtdoDate1.ToString() != "" && txtdoDate1.ToString() != "0000-00-00")

09-09 22:31