2012-04-18 33 views
0

.aspxページ内にasp:GridViewコントロールがあり、ユーザーは複数の行のデータを追加できます。ユーザーは追加されたデータの各行にファイルを添付することもできる必要があります。PostBackTrigger for GridView内のFileUpload機能

私はGridViewコントロール内で以下を使用し、このために

:私は値を設定するには、コードビハインドでRowUpdatingイベントを使用

<asp:TemplateField HeaderText="Upload" HeaderStyle-Width="120px"> 
    <EditItemTemplate> 
     <asp:FileUpload ID="fuUploadLocation" runat="server" Width="98%" TabIndex="18" /> 
    </EditItemTemplate> 
</asp:TemplateField> 

そして、ファイルアップロードの場所を保存するなど

問題は、GridViewの内部にあるので、HTMLをコントロールするためのPostBackTriggerを登録できないということです。私は他の例から動的に設定しようとしましたが、これを動作させるようには見えません。その結果、FileUploadのFileNameは常に空であり、ファイルは正しく保存されません。

どのような提案もすばらしいでしょう。

おかげで、ファイルアップロードコントロールを検索し、あなたのUpdatePanelポストバックトリガーに追加する必要がデータバインドされたGridViewの行に

+0

問題のためにAjax asynch File Uploaderを使用することができます。 http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/AsyncFileUpload/AsyncFileUpload.aspx –

+0

私はAsyncFileUploaderを使用しましたが、かなりの数の人には問題があります。アップロードに「添付ファイルが無効です」というエラーが表示され続けます。私はいくつかの修正プログラムを探して、ほとんどのClientIDMode = "AutoID"を設定すると言うか、コントロール自体にもweb.configでも、私はGridViewでこれを使用しているので、ClientIDMode 。 – Melanie

答えて

0

+0

はい、明らかです。私が述べたように、私はこれを行うためにいくつかの方法を試しましたが、それでも動作せず、ファイルは正しく保存されません。 – Melanie

0

私の問題の解決策は見つかりませんでしたが、私はそれを回避しました。私はちょうどグリッドへのリンクを追加することを知っている、ユーザーがそれをクリックするとIDを介してクエリ文字列を送信すると、アップロードプロセス全体を処理し、保存されたドキュメントのURLを返す新しいページが開きます。

理想的ではありませんが、動作して長時間の欲求不満を解消しました。

0

グリッドのOnItemDataBoundイベントハンドラでは、ScriptManager.GetCurrent(this).RegisterPostBackControl(ControlID);を呼び出す必要があります。

0

これは古い投稿ですが、それに固執している人にとっては、他の回答に記載されているように、あなたのコントロールに以下を追加する必要があります。

protected void ItemDataBound(object sender, EventArgs e) 
{ 
    Button myButton = (Button)e.Item.FindControl("myButton"); 

    if (myButton != null) 
     ScriptManager.GetCurrent(Page).RegisterPostBackControl(myButton); 
} 

また、次の例えばにフォームタグでのenctypeを変更する必要があります。:

protected void Page_PreRender(object sender, EventArgs e) 
{ 
    Page.Form.Attributes.Add("enctype", "multipart/form-data"); 
} 

それはその後、問題なく動作するはずです。

関連する問題