0
 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))
4

5 に答える 5

1

あなたのtdcdortdrcdは null です。そのため、この例外が発生しています。最初にヌルをチェックすることができます。

if ((tdcd != null && tdrcd!=null) && (!string.IsNullOrEmpty(tdcd.Text) && !string.IsNullOrEmpty(tdrcd.Text)))
于 2012-07-06T10:55:08.283 に答える
1

tdcdまたはtdrcdnullです。つまりFormViewDiagnostic.FindControl()、そのうちの 1 つに対して null が返されます。

これはおそらく、コントロールの正しい ID であるか、正しくない"DIAG_COMPL_DATETextBox"ことを意味します。"DIAG_REVIEW_COMPL_DATETextBox"

これらの ID が、フォームで実際に宣言されているものと一致することを確認してください。

于 2012-07-06T11:01:03.863 に答える
1

tdcdまたは、検索したとおりであり、常に取得できるとtdrcdnull限りません。

TextBox tdcd = (TextBox)FormViewDiagnostic.FindControl("DIAG_COMPL_DATETextBox");
TextBox tdrcd = (TextBox)FormViewDiagnostic.FindControl("DIAG_REVIEW_COMPL_DATETextBox");
于 2012-07-06T10:56:56.223 に答える
0

TextBox参照 (およびtdcd/またはtdrcd) が null です。

コントロールへの参照を取得するには、適切な( のプロパティを確認してください)FormView.ItemDataBoundイベントを使用する必要があります。FormViewModeCurrentModeFormView

DataBindコントロールを作成するために、以前に FormViewも必要です。

例 (TextBoxesが The にあると仮定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;
    }
}
于 2012-07-06T11:08:13.847 に答える
0

このようなチェックを行います

if(tdcd != null && tdrcd != null)
{
// do stuff
}
于 2012-07-06T10:56:32.763 に答える