0

gridview の ROWCOMMAND で呼び出されるダウンロード機能があります。クリックすると機能しますが、rowcommand で別の関数をクリック (呼び出し) すると機能しなくなります。例外をスローしません。すべてのステップをデバッグしようとしましたが、うまくいきませんでした。

なんで ?

ダウンロード機能:

public void DownloadFile(string FileName)
{
    try
    {
        string filePath = FileName;
        string fullFilePath = Server.MapPath("../../SiteImages/BPA/" + filePath);
        Response.Clear();
        Response.ClearHeaders();
        Response.ClearContent();
        Response.AddHeader("Content-Disposition", "attachment; filename=\"" + Path.GetFileName(fullFilePath) + "\"");
        Response.ContentType = ContentType;
        Response.TransmitFile(fullFilePath);
    }

行コマンド:

protected void grdViewUploadedMaterialOther_RowCommand(object sender, GridViewCommandEventArgs e)
{
    try
    {

        if (e.CommandName == "Download")
        {
            mdlImgPreview.Hide();

            string FileName = Convert.ToString(e.CommandArgument);

            DownloadFile(FileName);

            return;
        }

        if (e.CommandName == "View")
        {
            imgPreviewed.ImageUrl = "../../SiteImages/BPA/" + e.CommandArgument.ToString();
            mdlImgPreview.Show();
        }

    }
    catch (Exception ex)
    {
        ResultLabel.ResultLabelAttributes(ex.Message, ProjectUserControls.Enums.ResultLabel_Color.Red);
    }
    finally
    {
        ResultPanel.Controls.Add(ResultLabel);
    }

Rowdatabound: ボタンを登録するには

protected void grdViewUploadedMaterialOther_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {
            LinkButton lb = e.Row.FindControl("btnLinkDownload") as LinkButton;
            RegisterDownloadButton(lb);
        }
        catch (Exception ex)
        {
            ResultLabel.ResultLabelAttributes(ex.Message, ProjectUserControls.Enums.ResultLabel_Color.Red);
        }
        finally
        {
            ResultPanel.Controls.Add(ResultLabel);
        }
    }

登録機能:

public void RegisterDownloadButton(LinkButton lb)
    {
        try
        {

            if (lb != null)
                ScriptManager.GetCurrent(this).RegisterPostBackControl(lb);


        }
        catch (Exception ex)
        {
            ResultLabel.ResultLabelAttributes(ex.Message, ProjectUserControls.Enums.ResultLabel_Color.Red);
        }
        finally
        {
            ResultPanel.Controls.Add(ResultLabel);
        }
    }

グリッドビュー:

<asp:GridView runat="server" ID="grdViewUploadedMaterialOther" Width="100%" OnRowDataBound="grdViewUploadedMaterialOther_RowDataBound"
    OnRowCommand="grdViewUploadedMaterialOther_RowCommand" HeaderStyle-BackColor="#99CC99"
    DataKeyNames="Pk_UploadedMaterialOther_ID"
    AutoGenerateColumns="false"
    CssClass="table table-condensed table-bordered table-striped table-responsive">
    <PagerSettings Mode="Numeric" />
    <PagerStyle HorizontalAlign="Center" CssClass="gvwCasesPager" />
    <Columns>

        <asp:TemplateField HeaderText="View Attachment">
            <ItemTemplate>
                <asp:LinkButton ID="btnLnkViewAttachment" runat="server" Text="View" CommandArgument='<%# Eval("MaterialPath") %>' CommandName="View"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Download">
            <ItemTemplate>
                <asp:LinkButton ID="btnLinkDownload" runat="server" Text='<%# Eval("MaterialPath") %>'
                    CommandArgument='<%# Eval("MaterialPath") %>' CommandName="Download"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Delete">
            <ItemTemplate>
                <asp:ImageButton ID="btnDelete" runat="server" ImageUrl="~/assets/global/images/delete.png"
                    CommandName="cmdDelete" CommandArgument='<%# Container.DataItemIndex %>'
                    ControlStyle-Width="20px"
                    ControlStyle-Height="20px" />
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
4

1 に答える 1

0

問題を解決するグリッドビューに updatepanel コントロールを追加してみてください。

次のコードを参照してください。これが役立つ場合があります。

<asp:TemplateField HeaderText="Download">
        <ItemTemplate>
          <asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="fileUploadPanel">
        <ContentTemplate>
                    <asp:LinkButton ID="btnLinkDownload" runat="server" Text='<%# Eval("MaterialPath") %>'
                            CommandArgument='<%# Eval("MaterialPath") %>' CommandName="Download"></asp:LinkButton>
        </ContentTemplate>

                     <Triggers>
                        <asp:PostBackTrigger ControlID="btnLinkDownload" />
                     </Triggers>
    </asp:UpdatePanel> 
        </ItemTemplate>
    </asp:TemplateField>
于 2016-06-09T07:55:32.037 に答える