Как привязать данные из узла дерева в GridView - PullRequest
0 голосов
/ 28 мая 2019

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

Однако, при начальной загрузке страницы я не могу выбрать индекс страницы для получения исключения NullReferenceException.Я использую TV_EmaiBox для извлечения выбранного узла и передачи значения папки в метод GetListEmailList для извлечения электронной почты.

protected void GV_EmailList_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
        GV_EmailList.PageIndex = e.NewPageIndex;
        string checkFolder = TV_EmaiBox.SelectedNode.Value.ToString();
        this.GetListEmailList(checkFolder);
        }
        catch (Exception ex)
        {
            LB_ActionError.Text = ex.StackTrace.ToString();
        }
    }

Мой код GridView

<asp:GridView ID="GV_EmailList" runat="server" BorderWidth="1px" BorderColor="#CCCCCC"
                                        CellPadding="2" AutoGenerateColumns="False" HorizontalAlign="Left" Visible="False" BorderStyle="Solid" AllowPaging="True" OnPageIndexChanging="GV_EmailList_PageIndexChanging" OnSelectedIndexChanged="GV_EmailList_SelectedIndexChanged" PageSize="5" Width="100%">
                                        <RowStyle BackColor="White" HorizontalAlign="Left" VerticalAlign="Top" />

Мой код TreeView

<asp:TreeView ID="TV_EmaiBox" runat="server" NodeWrap="True" ShowLines="True" ImageSet="XPFileExplorer" 
                            ExpandDepth="1" OnSelectedNodeChanged="TV_EmaiBox_SelectedNodeChanged">
                            <RootNodeStyle Font-Bold="True" ForeColor="Black" />
                            <LeafNodeStyle Font-Italic="True" ForeColor="Blue" />
                        </asp:TreeView>

Я просто хочу знать, как передать значение TreeNode в моем изменении индекса страницы GridView,Допустим, моим текущим значением TreeNode является Inbox, поэтому OnPageIndexChanging должно отображать список электронных писем из этой папки.

Метод GetListEmailList

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);
    }
}

Метод загрузки моей страницы

 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, "&nbsp;{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, "&nbsp;{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);
        }

Метод TresView SelectedNodeChange

protected void TV_EmaiBox_SelectedNodeChanged(object sender, EventArgs e)
    {
        string checkFolder = TV_EmaiBox.SelectedNode.Value.ToString();
        this.GetListEmailList(checkFolder);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...