根据下面的代码,在获得一些值(newrev,newreview)并输入变量之后,我需要将它们放在标签中(“some text”+ newrev)。但我有问题(newrev)在当前的背景下不存在。
Label1.Text = "Review Number:" + newReview + "(for preparing of Rev." + newrev+")";
protected void ddlProjectDocument_SelectedIndexChanged(object sender, EventArgs e)
{
_DataContext = new EDMSDataContext();
var x = ddlProjectDocument.SelectedValue;
var MaxRev = (from rev in _DataContext.tblTransmittalls
where rev.DocID.ToString() == ddlProjectDocument.SelectedValue
select rev.REV).Max();
if (MaxRev == null)
{
var newRev = 0;
}
else
{
var newRev = Convert.ToInt32(MaxRev) + 1;
}
var MaxReview = (from rev in _DataContext.tblFiles
where (rev.DocId.ToString()==ddlProjectDocument.SelectedValue)&&
(rev.Rev.ToString()==MaxRev)
select rev.Review).Max();
if (MaxReview == null)
{
var newReview = 1;
}
else
{
var newReview = Convert.ToInt32(MaxReview) + 1;
}
Label1.Text = "Review Number:" + newReview + "(for preparing of Rev." + newrev+")";
}
答案 0 :(得分:2)
在您的函数开头定义newRev
和newReview
,如下所示:
protected void ddlProjectDocument_SelectedIndexChanged(object sender, EventArgs e)
{
_DataContext = new EDMSDataContext();
int newRev;
int newReview;
然后当你想使用它们时,不要写var newReview = ...
(声明一个新变量)而是删除var
......例如:
if (MaxReview == null)
{
newReview = 1;
}
差异:
声明的每个变量都有一个 Scope ,这决定了它对程序其余部分的可见性。在您的情况下,newReview
仅在if
语句中已知,因此当您尝试在外部引用它时,它就不再存在。
答案 1 :(得分:1)
您需要在newRev
声明之外声明if
。
int newrev;
if(MaxRev == null)
newRev = 0;
else
newRev = Convert.ToInt32(MaxRev) + 1;
答案 2 :(得分:1)
C#不是JavaScript,你应该少用“var”...... 您正在
中定义newRevif (MaxRev == null)
{
var newRev = 0;
}
在这里定义
protected void ddlProjectDocument_SelectedIndexChanged(object sender, EventArgs e)
{
_DataContext = new EDMSDataContext();
var newRev = 0;
....
}
答案 3 :(得分:1)
这是因为你在各种if语句中声明newRev,在外层声明它:
int newRev;
if (MaxRev == null)
{
newRev = 0;
}