我在 ascx 中有以下声明,它显示了4列文件名列表。文件名是 xlxs 文件,可以下载,以便在单击文件名时调用命令事件。
<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
是一个空字符串,应该是文件名。我知道快递Eval()
正在工作,因为它在控件中显示文件名。
为什么,filename
未被传递为CommandArgument
?
答案 0 :(得分:0)
您的CommandArgument
看起来不错,但另一种方法是从sender
对象获取LinkButton的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);
}
}
}