1

グリッド ビューの各行にファイル アップロード ボタンが必要です。最後に、ファイルアップロードボタンから選択したファイルをアップロードするボタンが必要です。コードはありますが、ファイルのアップロード ボタンと更新するボタンの両方がありますが、コマンド名を変更すると機能しません。以下は私のコードです。

私のコードでは、ファイルアップロードボタンとボタン更新の両方を表示しています。これは正常に機能しますが、すべてのファイルを更新するには、単一のボタンを備えた複数のファイル アップロード ボタンが必要です。

    <asp:GridView ID="GridView1" runat="server">
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:FileUpload ID="FileUpload1" runat="server" />
                        <asp:Button ID="Button1" runat="server" CommandArgument='<%# Container.DataItemIndex  %>'
                            Text="Upload" OnClick="Button1_Click" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string[] strArray = { "Test1", "Test2", "Test3" };
            GridView1.DataSource = strArray;
            GridView1.DataBind();
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        int index = int.Parse(((Button)sender).CommandArgument);

        FileUpload file = (FileUpload)GridView1.Rows[index].FindControl("FileUpload1");

        if (file != null)
        {
            if (file.HasFile)
            {
                Response.Write(file.PostedFile.FileName);
                Response.End();
                //file.SaveAs(Server.MapPath("~") + "\\DataBind\\" + System.IO.Path.GetFileName(file.PostedFile.FileName));
            }
        }
    }
4

1 に答える 1

0

近くにいるようです。すべての行で同じことをしたいだけです。そのために foreach ループを使用できます。

protected void Button1_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in GridView1.Rows)
    {
        FileUpload file = (FileUpload)row.FindControl("FileUpload1");

        if (file != null)
        {
            if (file.HasFile)
            {
                // Save your file here
            }
        }
    }
}
于 2013-04-22T19:33:08.683 に答える