我正在尝试将一个值从DetailsView传递给FormView,但我总是收到错误:对象引用未设置为对象的实例。不知怎的,它传递了一个值,我仍然可以执行插入。这是我第一次用C#编程。任何肝脏都会非常感激!
提前致谢
这里我附上了一个代码。我认为这里的问题是我没有空检查,所以如何添加空检查?
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();
}
}
}
}
答案 0 :(得分:2)
有几个地方可以检查是否为空。
1)如果您的演员表不正确:
TextBox bookid = FormView1.FindControl("bookidTextBox") as TextBox;
if (bookid != null)
bookid.Text = ((DataRowView)DetailsView1.DataItem)["bookid"].ToString();
TextBox employee = FormView1.FindControl("EmployeeIDTextBox") as TextBox;
if (employee != null)
employee.Text = ((DataRowView)DetailsView1.DataItem)["EmployeeID"].ToString();
2)如果控件没有值,ToString()
也会抛出对象null引用异常:
((DataRowView)DetailsView1.DataItem)["bookid"] != null
((DataRowView)DetailsView1.DataItem)["EmployeeID"] != null
您的代码的哪一行是抛出的异常?
答案 1 :(得分:2)
由于是软弹,所以在某些时候它无法施放。也许尝试使用显式转换或单步执行代码以查明FindControl是否返回控件。
答案 2 :(得分:0)
线程是旧的,但是当我在formview的itemtemplate和edititemtemplete中绑定下拉列表选择的值时,我遇到了这个错误。我通过将代码放在try catch语句中来解决这个问题。