2017-08-23 69 views
1

我在ascx中有以下声明,它显示文件名的4列列表。文件名是xlxs可以下载的文件,以便在单击文件名时调用命令事件。这个DataList转发器的实现有什么问题?

<asp:DataList runat="server" ID="dlHistoricalRates" RepeatColumns="4" > 
    <HeaderStyle> 
    </HeaderStyle> 
    <HeaderTemplate> 
     <span>Historial Rates</span> 
    </HeaderTemplate>   
    <ItemTemplate>   
     <asp:LinkButton id="historicalRate" ClientIDMode="Static" 
      runat="server" CommandArgument='<%# Eval("filename") %>' 
      CommandName="Download" OnCommand="historicalRate_OnCommand" > 
       <%# Eval("filename") %> 
     </asp:LinkButton> 
    </ItemTemplate>   
</asp:DataList> 

代码隐藏命令代码:

protected void historicalRate_OnCommand(object sender, CommandEventArgs e) 
{ 
    if (e.CommandName == "Download") 
    { 
     if (e.CommandArgument != null) 
     { 
      historicalRate_Download(e.CommandArgument.ToString());      
     }     
    } 
} 

CommandArgument是一个空字符串时,它应该是文件名。我知道快递​​正在工作,因为它显示控件中的文件名。

为什么,filename不能作为CommandArgument传递?

回答

0

CommandArgument看起来不错,但另一种方式从sender对象获得的LinkBut​​ton的ARG:

protected void historicalRate_OnCommand(object sender, CommandEventArgs e) 
{ 
    // get the reference of clicked LinkButton 
    LinkButton lb = sender as LinkButton; 
    string cmd = lb.CommandName; 
    string arg = lb.CommandArgument; 

    if (cmd == "Download") 
    { 
     if (arg != null) 
     { 
      historicalRate_Download(arg);      
     }     
    } 
} 
+0

@Ali - 的ARG仍然是空字符串。 – MDC

+0

在LinkBut​​ton的“OnClick”事件中尝试它并查看。 – AsifAli72090