【发布时间】:2011-06-06 02:37:30
【问题描述】:
我正在尝试将值从 DetailsView 传递到 FormView 但我总是收到错误:对象引用未设置为对象的实例。不知何故,它确实传递了一个值,我仍然可以执行插入。这是我第一次用 C# 编程。任何 hep 将不胜感激!
提前致谢
这里我附上了一个代码。我认为这里的问题是我没有空检查,那么如何添加空检查?
using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class BookLending : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void FormView1_DataBound(object sender, EventArgs e)
{
if(FormView1.CurrentMode == FormViewMode.Insert && FormView1.Fin != null)
{
TextBox bookid = FormView1.FindControl("bookidTextBox") as TextBox;
bookid.Text = ((DataRowView)DetailsView1.DataItem)["bookid"].ToString();
}
{
TextBox employee = FormView1.FindControl("EmployeeIDTextBox") as TextBox;
employee.Text = ((DataRowView)DetailsView1.DataItem)["EmployeeID"].ToString();
}
}
}
}
【问题讨论】:
-
哪一行抛出异常?
-
对不起,这是我第一次编程,所以我怎么能“抛出异常”。我刚开始两个月前,但仍然无法得到它。看来我还有很长的路要走。哦,请原谅我的英语。
-
按 F5 进行调试。然后当
FormView1被数据绑定时,等到一行以黄色突出显示-意思是那里抛出异常。 -
@Alex:谢谢先生!这是带有突出显示的黄色的代码: bookid.Text = ((DataRowView)DetailsView1.DataItem)["bookid"].ToString();
-
在我的回答中,你能看到
((DataRowView)DetailsView1.DataItem)["bookid"]是否为空吗?快速观察并检查。如果它为空,则ToString()正在抛出异常,您应该围绕它进行空检查。下一步是确定您的bookid是否是DataRowView的有效索引。您还可以检查您是否正确地将DetailsView1.DataItem转换为DataRowView。