0

asp.net を介してクライアントからサーバーにファイルをアップロードしようとしています。問題は、TabPanel 内で fileupload コントロールが機能しないことです。基本的に、fileupload のファイル名と postedfiles プロパティは、送信後に null になります。そして、TabPanel を追い出すことはできません。

私は他の解決策を探しています。1 つは、ユーザーがファイルのパスを入力フィールドに入力してボタンを送信することを要求することです。

問題は、ファイルのパスに基づいてファイルをアップロードする方法です。

あなたの助けは非常に高く評価されます。

コードはこんな感じ。問題のコントロール ID は「fuAttachments」です

<asp:updatepanel id="upnlForTab" runat="server">
<ContentTemplate>
            <asp:TabContainer ID="tcFS" runat="server" ActiveTabIndex="0">                    
                <asp:TabPanel ID="TabPanelAnnualFS" runat="server" HeaderText="AnnualFS">                    
                    <ContentTemplate>     
                        <asp:FormView ID="fvAnnualFS" OnDataBound="fvAnnualFS_DataBound" runat="server">
                            <InsertItemTemplate>
                            </InsertItemTemplate>
                            <EditItemTemplate>
                                <table>
                                    <tr>
                                        <td colspan="2">
                                            Edit a Financial Statement
                                            <asp:HiddenField ID="hfIDStatement" runat="server" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            Attachments:
                                        </td>
                                        <td>
                                            <asp:GridView ID="gvAttachments" AutoGenerateColumns="false" runat="server">
                                                <Columns>
                                                    <asp:TemplateField>
                                                        <ItemTemplate>
                                                            <asp:Label runat="server" Text='<%#Eval("AttachmentName")%>'></asp:Label>
                                                        </ItemTemplate>
                                                    </asp:TemplateField>
                                                </Columns>
                                            </asp:GridView>
                                            <asp:FileUpload ID="fuAttachments" runat="server" /> 
                                            <asp:Button ID="btnAddAttachment" runat="server" OnClick="btnAddAttachment_Click" Text="Add" />
                                        </td>
                                    </tr>
                                    <tr>
                                        <td>
                                            <asp:Button ID="btnSubmitEditAnnualFS" ValidationGroup="SaveFS" OnClick="btnSubmitEditNewAnnualFS_Click"
                                                runat="server" Text="Submit" />
                                        </td>
                                        <td>
                                        </td>
                                    </tr>
                                </table>
                            </EditItemTemplate>
                        </asp:FormView>
                    </ContentTemplate>
                </asp:TabPanel>
            </asp:TabContainer>
</ContentTemplate>

バックエンドでは、コードは次のようになります。問題は、fuAttachments のすべてのプロパティがポストされないことです。これは、updatepanel および tabpanel 内のファイル アップロード コントロールの既知の問題です。

        /// <summary>
    /// Add document to the document list.
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnAddAttachment_Click(object sender, EventArgs e)
    {
        HiddenField hfIDStatement = fvAnnualFS.FindControl("hfIDStatement") as HiddenField;
        FileUpload fuAttachments = fvAnnualFS.FindControl("fuAttachments") as FileUpload;
    }
4

1 に答える 1

1

まず、あなたの HiddenField と FileUpload は、探している方法では見つかりません。それらは他のオブジェクト内にネストされているため、最初に親オブジェクトを見つける必要がありますが、少し面倒です。

    protected void btnAddAttachment_Click(object sender, EventArgs e)
    {
        Button btn = (Button)sender;
        TemplateControl UploadContainer = (TemplateControl)btn.Parent;

        HiddenField hfIDStatement = (HiddenField)UploadContainer.FindControl("hfIDStatement");
        FileUpload fuAttachments = (FileUpload)UploadContainer.FindControl("fuAttachments");
    } 
于 2012-10-16T20:46:03.147 に答える