我在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);
}
RowCommand:
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);
}
}
的GridView:
<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>
答案 0 :(得分:0)
尝试将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>