在我的代码中,我有以下内容:
public void PopulateForm(int i)
{
DAL.TicketsDataSetTableAdapters.TicketDetailsTableAdapter fobj = new DAL.TicketsDataSetTableAdapters.TicketDetailsTableAdapter();
DataTable dt = new DataTable();
dt = fobj.GetTicketUpdates(txtSupportRef.Text);
txtShortDesc.Text = dt.Rows[0].Table.Rows[i]["ShortDesc"].ToString();
txtNextStep.Text = dt.Rows[0].Table.Rows[i]["NextStep"].ToString();
txtLastUpdated.Text = dt.Rows[0].Table.Rows[i]["LastUpdated"].ToString();
}
Run Code Online (Sandbox Code Playgroud)
然后在我背后的代码的另一个区域:
protected void btnNext_Click1(object sender, EventArgs e)
{
int i = (int)ViewState["recordIndex"];
i = i >= dt.Rows[0].Table.Rows.Count - 1 ? 0 : i + 1;
PopulateForm(i);
}
Run Code Online (Sandbox Code Playgroud)
但是当我构建解决方案时,它说:
The name 'dt' does not exist in the current context
问题与变量范围有关.在方法中声明变量时,它只能在该方法内部访问,并且不存在于该方法之外.
如果要重用该变量内容,则应将其移至更高级别,如类级别:
DataTable dt = new DataTable();
public void PopulateForm(int i)
{
// ...
}
protected void btnNext_Click1(object sender, EventArgs e)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是,在这种情况下,您应该知道在dt调用时变量将为空btnNext_Click1,因为它只会在PopulateForm调用时填充.
| 归档时间: |
|
| 查看次数: |
175 次 |
| 最近记录: |