我正在尝试根据我的数据类中的方法设置ASP行和单元格颜色。我有颜色设置和方法运行。该方法根据以下条件返回true
或false
。如何防止该方法多次运行?
例如,它运行一次并正确返回,然后在""
和lineNum
字段中使用brandNum
再次运行,其中包计数与第一次运行的数量相同。它处理为我的方法调用的每个实例运行一次。然后,当我实际再次调用该方法时,它再次运行所有内容。为什么它不止一次运行?我该如何解决这个问题呢?
output:
lineNum:123 brandNum:456 packCount:15
second run (not asked for)
lineNum:"" brandNum:"" packCount:15
确定是否为真的方法:
SqlParameter[] parameters = new SqlParameter[]
{
new SqlParameter("@GenNum6", itemNum),
new SqlParameter("@GenTxt9", brandNum)
};
try
{
reader = App_Code.DBHelper.executeQuery(dbConn,
sqlString.ToString(), parameters);
if (reader.HasRows)
{
while (reader.Read())
{
PackCount = reader["PackCount"].ToString();
}
}
reader.Close();
reader.Dispose();
dbConn.Close();
dbConn.Dispose();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (dbConn != null)
{
try { dbConn.Close(); dbConn.Dispose(); }
catch { }
}
if (reader != null)
{
try { reader.Close(); reader.Dispose(); }
catch { }
}
}
if (Convert.ToInt32(PackCount) <= 12)
{
return true;
}
else
{
return false;
}
呼叫:
if (lineData.PacksLeft1(L1.Text,L2.Text))
{
myTable.Rows[1].Cells[0].BgColor = "#FE2E2E";
myTable.Rows[1].Cells[1].BgColor = "#FE2E2E";
myTable.Rows[1].Cells[2].BgColor = "#FE2E2E";
myTable.Rows[1].Cells[3].BgColor = "#FE2E2E";
}
答案 0 :(得分:0)
不需要finally语句,因为它执行与try语句中执行的操作相同的操作。我相信看到这篇文章之后,如果你回到它的调用地点,你可以让它在try catch中运行,做同样的事情。我建议采取
reader.Close();
reader.Dispose();
dbConn.Close();
dbConn.Dispose();
退出try块并离开finally语句。这样,无论结果如何,都会执行这些项目。
最后仅在您希望代码在执行try语句之后运行某些内容时使用。如:
Try{
//Try this statement, if it works, run it.
}
catch{
//error occurred
}
finally{
//run this code whether the try failed or not.
}