0

ファイルアップロードコントロールに問題があります。アコーディオンがあり、ContentTemplate 内にファイルアップロードコントロールがあり、送信ボタンが送信されたときにコントロールを見つけようとしていますが、常に null になっています。

<asp:Accordion ID="Accordion1" runat="server" AutoSize="None" FramesPerSecond="40"
                SelectedIndex="-1" TransitionDuration="100" FadeTransitions="true" RequireOpenedPane="false"
                SuppressHeaderPostbacks="true" ContentCssClass="accordionContent" HeaderCssClass="accordionHeader"
                HeaderSelectedCssClass="accordionHeaderSelected" 
                OnItemCommand="Accordion1_ItemCommand" 
                onitemdatabound="Accordion1_ItemDataBound">
                <HeaderTemplate>
                    <%#DataBinder.Eval(Container.DataItem, "order_id")%>
                    <asp:Label ID="lblOrderID" runat="server" Text='<%#Eval("description")%>'></asp:Label>
                </HeaderTemplate>
                <ContentTemplate>
                    <asp:Label ID="lblNotes" runat="server" Text='<%#Eval("notes")%>'></asp:Label>
                    <asp:Label ID="lbltext" runat="server" Text='להגשת מועמדות למשרה זו צרף קו"ח'></asp:Label>
                    <asp:FileUpload ID="FileUpload1" runat="server" />
                    <asp:Button ID="btnSend" runat="server" Text="שלח" CommandName="send" />
                </ContentTemplate>
            </asp:Accordion>

 protected void Accordion1_ItemCommand(object sender, CommandEventArgs e)

    {
        if (e.CommandName == "send")
        {
            FileUpload fu = new FileUpload();
            fu = (FileUpload) FindControl("FileUpload1");
            if (fu.HasFile)
            {
                SmtpClient client = new SmtpClient();
                MailAddress from = new MailAddress("", "יש לך הודעה חדשה", System.Text.Encoding.UTF8);
                MailAddress to = new MailAddress("");
                MailMessage message = new MailMessage(from, to);
                message.Body = "";
                //Attachment data = new Attachment(FileUpload.
                //message.Attachments.Add(FindControl("fu"));
            }
        }
    }
4

1 に答える 1

0

FindControlを実行すると、最上位のコンテナーで検索することになり、FindControlは再帰的ではありません。アップロードコントロールを見つけたい場合は、Accordion1のように見える直接の親から検索する必要があります。

FileUpload fu = Accordion1.FindControl("FileUpload1") as FileUpload;
于 2012-04-22T13:46:40.723 に答える