Почему метод в gridview Binding создает исключение NullReferenceException - PullRequest
0 голосов
/ 23 июня 2011

Как видно из заголовка, у меня есть метод, который выбрасывает исключение NullReferenceException в моем методе привязки DataGridView.

Вот мой код (упрощенно):

private void GridViewBinding(string sortExpression, string direction)
        { 

             string lang = string.Empty;
             Regex appnoRegex = new Regex("\\d{4}(-)\\d{4}(-)\\d{1}");
             int colCount = gvData.Columns.Count;

            DataView dv = GetData();
            //DataView dvApplication = GetApplicationsData();

            //Sorting only on postback, else rel. docs won't appear
            if (Page.IsPostBack)
            {
                dv.Sort = sortExpression + " " + direction;
            }

            lblTotal.Text = dv.Count.ToString();

            gvData.DataSource = dv;
            gvData.DataKeyNames = new string[] { "InterventionID", "ItemNumber" };
            gvData.DataBind();

            ChangeHeaders(_docTypeQueryStr, colCount, appnoRegex);
}

Метод изменения заголовка:

private void ChangeHeaders(string DocType, int colCount, Regex appnoRegex)
        {
            switch (DocType.ToUpper())
            {
                //intervention documents
                case "I":
                    lblDocumentTypeTitle.Text = Resources.GeneralResouces.lblTypeTitleInterventionsText;
                    lblIntervenorLastName.Text = Resources.GeneralResouces.lblIntervenorLastNameInterventionText;
                    break;
                //Replies document
                case "R":
                    lblDocumentTypeTitle.Text = Resources.GeneralResouces.lblTypeTitleRepliesText;
                    lblIntervenorLastName.Text = Resources.GeneralResouces.lblIntervenorLastNameRepliesText;
                    break;
                //Answer Documents
                case "AR":
                    lblDocumentTypeTitle.Text = Resources.GeneralResouces.lblTypeTitleAnswersText;
                    lblIntervenorLastName.Text = Resources.GeneralResouces.lblIntervenorLastNameAnswerText;
                    break;
                //if none of teh above
                default:
                    //Notice of consultations
                    if (applicationCount == 0 && !appnoRegex.IsMatch(_eventNoQueryStr))
                    {
                        lblIntervenorLastName.Text = Resources.GeneralResouces.lblIntervenorText;
                    }
                    //Part 1 applications
                    else
                    {
                        //Part 1 applications and notices with applications
                        if (applicationCount != 0 || appnoRegex.IsMatch(_eventNoQueryStr))
                        {
                            lblIntervenorLastName.Text = Resources.GeneralResouces.lblIntervenorWithApplicationsText;
                        }
                    }
                    break;
            }

Это трассировка стека, которую я получаю:

[NullReferenceException: Object reference not set to an instance of an object.]
   Interventions._Default.ChangeHeaders(String DocType, Int32 colCount, Regex appnoRegex) +13
   Interventions._Default.GridViewBinding(String sortExpression, String direction) +331
   Interventions._Default.Page_Load(Object sender, EventArgs e) +888
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +91
   System.Web.UI.Control.LoadRecursive() +74
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207

Из того, что я понял, ошибка исходит из метода ChangeHeaders.Я попытался поместить метод ChangeHeaders в комментарии, и больше не было ошибок.Это сказало мне, что ошибка действительно была из метода ChangeHeaders.Тем не менее, это первый раз, когда я получаю NUllReferenceException от метода, и я теряюсь в том, почему он это делает.Тем более что указанный метод есть в коде, и при его вызове нет опечаток.

Как я могу это исправить, спасибо.

1 Ответ

0 голосов
/ 30 июня 2011

Проверьте значение _docTypeQueryStr.

Возможно, вы передаете нулевое значение в ChangeHeaders и делаете ToUpper ().

...