我在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")