Kamalllll Ответов: 1

Ошибка Gridview при начальной загрузке страницы


Всем Привет,

В настоящее время мой веб-странице отображается список писем в GridView и папок электронной почты из дерева. Однако, если я изменяю индекс страницы при начальной загрузке страницы/первой загрузке, это дает мне ошибку.

Но если я нажму на любой из TreeView, а затем на Gridview pagination. Он не возвращает никаких ошибок.

<pre>protected void Page_Load(object sender, EventArgs e)
        {
            B_EmailMsgDelete.Attributes.Add("onclick", 
        "javascript:if(!doDeleteEmailMsg()) return false;");
            IB_EmailMover.Attributes.Add("onclick", "javascript:if(!doMoveEmailMsg()) return false;");
            
            if (!IsPostBack)
            {
                TreeNode rootTreeNode = new TreeNode();
                rootTreeNode.Text = string.Format(CultureInfo.CurrentCulture, " {0}", this.curEmailBox);
                rootTreeNode.Value = this.EmailFolderList[0];
                rootTreeNode.ImageUrl = "../../Images/emailbox.gif";

                for (int i = 0; i < this.EmailFolderList.Length; i++)
                {
                    if (i > 0)
                    {
                        TreeNode treeNode = new TreeNode();
                        treeNode.Text = string.Format(CultureInfo.CurrentCulture, " {0}", this.EmailFolderList[i]);
                        treeNode.Value = this.EmailFolderList[i];
                        treeNode.ImageUrl = "../../Images/folder.gif";
                        rootTreeNode.ChildNodes.Add(treeNode);
                    }

                    DL_MoveTo.Items.Add(this.EmailFolderList[i]);
                }

                TV_EmaiBox.Nodes.Add(rootTreeNode);
                this.GetListEmailList(rootTreeNode.Value);
            }
        }


TreeView Элемент На Странице Индекса Изменения
protected void TV_EmaiBox_SelectedNodeChanged(object sender, EventArgs e)
        {
            string checkFolder = TV_EmaiBox.SelectedNode.Value.ToString();
            this.GetListEmailList(checkFolder);
        }


GridList На Индексе Страницы
protected void GV_EmailList_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    GV_EmailList.PageIndex = e.NewPageIndex;
    string checkFolder = TV_EmaiBox.SelectedNode.Value.ToString();
    this.GetListEmailList(checkFolder);
}


Метод GetEmailList
private void GetListEmailList(string folderName)
       {
           try
           {
               LB_ActionError.Text = string.Empty;
               PH_MsgDetail.Visible = true;

               var emails = EmailMsg.GetEmailListInFolder(folderName);
               LB_CurBox.Text = string.Format(CultureInfo.CurrentCulture, "{0} ({1})", folderName, emails.Count);

               int intTotal = emails.Count;
               if (intTotal == 0)
               {
                   LB_ActionStatus.Text = Utility.SetActStatus(true, "There is no email message found in this folder.");
                   GV_EmailList.DataSource = new ArrayList();
                   GV_EmailList.DataBind();
                   GV_EmailList.Visible = false;
               }
               else
               {
                   LB_ActionStatus.Text = Utility.SetActStatus(true, string.Format(CultureInfo.CurrentCulture, "There are {0} email message(s) found in this folder.", intTotal));
                   GV_EmailList.DataSource = emails;
                   GV_EmailList.DataBind();
                   GV_EmailList.Visible = true;

                   GV_EmailList.SelectedIndex = -1;
               }
           }
           catch (Exception ex)
           {
               LB_ActionStatus.Text = Utility.SetActStatus(false, ex.Message.ToString());
           }

           LB_AdminEmailBox.Text = string.Format(CultureInfo.CurrentCulture, Entity.GetSetting("MailBoxAddress"), folderName);
       }
   }


Что я уже пробовал:

I have tried many approaches but no luck so far. What I want is when this page is loaded for the first time. GridView page index should not return any when I change page index. 

Richard Deeming

"это дает мне ошибку"

Нажмите кнопку "улучшить вопрос" и обновите свой вопрос с полной информацией об ошибке. Не забудьте указать, из какой строки кода он выбрасывается.

1 Ответов

Рейтинг:
2

Gerry Schmitz

События не всегда срабатывают, когда вы "думаете", что они будут. Вы не можете предполагать, что вещи находятся в действительном состоянии, когда они стреляют. (особенно во время "запуска")

Вы не можете предположить, что "выбранный элемент" (узел) является допустимым, если сначала не проверите значение null, например.

string checkFolder = TV_EmaiBox.SelectedNode.Value.ToString();