簡體   English   中英

為什么row命令不能正常工作?

[英]Why doesn't row command properly work?

我有一個在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>

嘗試將updatepanel控件添加到gridview中,這將解決您的問題。

請參考以下代碼,這可能會對您有所幫助。

<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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM