C# dropdownlist索引映射到表索引并在C中显示给gridview
我被这个密码困住了。请帮我解决这个问题 我想做的是:我有一个dropdownlist,它有1天,2天,3天等等,我想做的是我必须把这些天映射到我的数据库,并显示给gridview 但问题是我认为我的映射有问题,当我选择第1天时,我得到一条错误消息:数据为空。无法对空值调用此方法或属性 如果我选择除1以外的任何一天,它将在gridview中显示值;但是,我希望dropdownlist索引对应的单个值与表索引匹配 这是我的密码:C# dropdownlist索引映射到表索引并在C中显示给gridview,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我被这个密码困住了。请帮我解决这个问题 我想做的是:我有一个dropdownlist,它有1天,2天,3天等等,我想做的是我必须把这些天映射到我的数据库,并显示给gridview 但问题是我认为我的映射有问题,当我选择第1天时,我得到一条错误消息:数据为空。无法对空值调用此方法或属性 如果我选择除1以外的任何一天,它将在gridview中显示值;但是,我希望dropdownlist索引对应的单个值与表索引匹配 这是我的密码: protected void btnSubmit_Click(
protected void btnSubmit_Click(object sender, EventArgs e)
{
Label1.Visible = true;
Label2.Visible = true;
double dbstan_minmoist = 0.0;
double dbstan_mintemp = 0.0;
double dbstan_sunshine = 0.0;
double dbstan_capacity = 0.0;
double dbcurr_minmoist = 0.0;
double dbcurr_mintemp = 0.00;
double dbcurr_capacity = 0.0;
double dbcurr_sunshine = 0.0;
if (ddl.SelectedIndex >0)
{
int id = Convert.ToInt32(ddl.SelectedIndex);
int c = 1;
SqlConnection con = new SqlConnection(@"Data Source");
con.Open();
var strquery = "select Min_Moisture,Min_Temperature,Sunshine,Field_Capacity from tbl_Standard_values";
SqlCommand cmd = new SqlCommand(strquery, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (c== id)
{
dbstan_mintemp = dr.GetDouble(dr.GetOrdinal("Min_Temperature"));
dbstan_minmoist = dr.GetDouble(dr.GetOrdinal("Min_Moisture"));
dbstan_sunshine = dr.GetDouble(dr.GetOrdinal("Sunshine"));
dbstan_capacity = dr.GetDouble(dr.GetOrdinal("Field_Capacity"));
break;
}
else
{
c=c+1;
}
}
SqlConnection con1 = new SqlConnection(@"Data Source=");
con1.Open();
var strquery1 = "select distinct Min_Moisture,Mim_Temperature,Sunshine,Field_Capacity from tbl_Cornels_Development";
SqlCommand cmd1 = new SqlCommand(strquery1, con1);
int d = 1;
SqlDataReader dr1 = cmd1.ExecuteReader();
while (dr1.Read())
{
if (d == id)
{
dbcurr_mintemp = dr1.GetDouble(dr1.GetOrdinal("Mim_Temperature"));
dbcurr_minmoist = dr1.GetDouble(dr1.GetOrdinal("Min_Moisture"));
dbcurr_sunshine = dr1.GetDouble(dr1.GetOrdinal("Sunshine"));
dbcurr_capacity = dr1.GetDouble(dr1.GetOrdinal("Field_Capacity"));
break;
}
else
{
d=d+1;
}
}
//first case
if ((dbcurr_mintemp < dbstan_mintemp) && (dbcurr_minmoist < dbstan_minmoist) && (dbcurr_capacity < dbstan_capacity) && (dbcurr_sunshine < dbstan_sunshine))
{
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('LightIrrigation');", true);
}
//second case
else if ((dbcurr_mintemp < dbstan_mintemp) && (dbcurr_minmoist < dbstan_minmoist) && (dbcurr_capacity < dbstan_capacity) && (dbcurr_sunshine > dbstan_sunshine))
{
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('LightIrrigation');", true);
}
GridView1.DataSource = dr;
GridView1.DataBind();
GridView2.DataSource = dr1;
GridView2.DataBind();
con.Close();
}
else
{
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Please select a day');", true);
}
}
}
我发现很难理解问题和代码,但经过一些阅读,我认为您的问题可能是以下几行:
var strquery1 = "select distinct Min_Moisture,Mim_Temperature,Sunshine,Field_Capacity from tbl_Cornels_Development";
...
dbcurr_mintemp = dr1.GetDouble(dr1.GetOrdinal("Mim_Temperature"));
应改为:
var strquery1 = "select distinct Min_Moisture,Min_Temperature,Sunshine,Field_Capacity from tbl_Cornels_Development";
...
dbcurr_mintemp = dr1.GetDouble(dr1.GetOrdinal("Min_Temperature"));
也就是说,您使用的是Mim而不是Min。谢谢您的回复!!但这不是问题。becoz Mim_temprature是不同表的列名。哪行代码引发异常/错误?你能发布完整的异常/错误吗?