对象引用未设置为对象的实例if(!string.IsNullOrEmpty(tdcd.Text)&&!string.IsNullOrEmpty(tdrcd.Text))

时间:2012-07-06 10:54:01

标签: c# javascript asp.net c#-4.0 code-behind

 protected void EditButton_Click(object sender, EventArgs e)
    {

        TextBox tdcd = (TextBox)FormViewDiagnostic.FindControl("DIAG_COMPL_DATETextBox");
        TextBox tdrcd = (TextBox)FormViewDiagnostic.FindControl("DIAG_REVIEW_COMPL_DATETextBox");
        RadioButtonList rbl =(RadioButtonList)FormViewDiagnostic.FindControl("DIAG_LL_APPROVALRadioButtonList");
        TextBox tll = (TextBox)FormViewDiagnostic.FindControl("DIAG_LL_COMMENTSTextBox");

        //if (!"".Equals(tdcd) && !"".Equals(tdrcd))

        if (!string.IsNullOrEmpty(tdcd.Text) && !string.IsNullOrEmpty(tdrcd.Text))
        {

            //tdcd.Visible = true;
            //tdrcd.Visible = true;

            FormViewDiagnostic.FindControl("DIAG_LL_APPROVALRadioButtonList").Visible = true;
            FormViewDiagnostic.FindControl("DIAG_LL_COMMENTSTextBox").Visible = true;
        }
        else
        {
            //tdcd.Visible = false;
            //tdrcd.Visible = false;
            FormViewDiagnostic.FindControl("DIAG_LL_APPROVALRadioButtonList").Visible = false;
            FormViewDiagnostic.FindControl("DIAG_LL_COMMENTSTextBox").Visible = false;
        }
    }

对象引用未设置为行

处的对象实例
if (!string.IsNullOrEmpty(tdcd.Text) && !string.IsNullOrEmpty(tdrcd.Text))

5 个答案:

答案 0 :(得分:1)

您的tdcdtdrcd为空。这就是你得到这个例外的原因。您可以先检查它们是否为null。

if ((tdcd != null && tdrcd!=null) && (!string.IsNullOrEmpty(tdcd.Text) && !string.IsNullOrEmpty(tdrcd.Text)))

答案 1 :(得分:1)

您搜索

tdcdtdrcd null并且无法保证您始终可以获得它。

TextBox tdcd = (TextBox)FormViewDiagnostic.FindControl("DIAG_COMPL_DATETextBox");
TextBox tdrcd = (TextBox)FormViewDiagnostic.FindControl("DIAG_REVIEW_COMPL_DATETextBox");

答案 2 :(得分:1)

tdcdtdrcd为空。这意味着FormViewDiagnostic.FindControl()为其中一个返回null。

这可能意味着"DIAG_COMPL_DATETextBox""DIAG_REVIEW_COMPL_DATETextBox"不是控件的正确ID。

检查这些ID是否与表单上实际声明的内容相匹配。

答案 3 :(得分:0)

做这样的检查

if(tdcd != null && tdrcd != null)
{
// do stuff
}

答案 4 :(得分:0)

TextBox引用(tdcd和/或tdrcd)为空。

您应该将FormView.ItemDataBound事件与相应的FormViewMode一起使用(查看FormView的{​​{3}}属性)以获取对您控件的引用。

您之前还需要DataBind FormView,创建控件的内容。

例如(假设TextBoxes位于EditItemTenmplate):

protected void EditButton_Click(object sender, EventArgs e)
{
    Object someSource=null;
    FormViewDiagnostic.ChangeMode(FormViewMode.Edit);
    FormViewDiagnostic.DataSource = someSource;
    FormViewDiagnostic.DataBind();
}


protected void FormViewDiagnostic_DataBound(Object sender, EventArgs e)
{
    var view = (FormView)sender;
    if (view.CurrentMode == FormViewMode.Edit)
    {
        var txt1 = (TextBox)view.FindControl("DIAG_COMPL_DATETextBox");
        var txt2 = (TextBox)view.FindControl("DIAG_REVIEW_COMPL_DATETextBox");
        var txt3 = (TextBox)view.FindControl("DIAG_LL_COMMENTSTextBox");
        var rbl = (RadioButtonList)view.FindControl("DIAG_LL_APPROVALRadioButtonList");
        txt3.Enabled = rbl.Enabled = txt1.Text.Length != 0 && txt2.Text.Length != 0;
    }
}