2017-08-23 96 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