因此,我有一个用数据填充的表,但是我想知道如何从一行中传递两位数据,这取决于单击了行尾的哪个link。
<%WebReceiptSummary[] receipts = GetReceipts();
if (receipts != null)
{
for (int i = 0; i < receipts.Length; i++)
{%>
<tr>
<td><%= receipts[i].Type%></td>
<td><%= receipts[i].PolicyNo%></td>
<td><%= receipts[i].Date%></td>
<td class="c"><%= receipts[i].Amount%></td>
<td class="r"><asp:LinkButton OnCommand="PDFLinkClick"
CommandArgument="<%= receipts[i].PDF %>&<% receipts[i].PolicyNo %>" runat="server">View PDF</asp:LinkButton></td>
</tr>
<% }
}
%>显然,我的CommandArgument只是传回字符串<%= receipts[i].PDF %>&<% receipts[i].PolicyNo %>,而不是传回值。做这件事的最好方法是什么?我也在考虑使用;
<asp:HiddenField ID="hiddenIsCaptchaReadyValidate" runat="server" Value=false/>但是我在这里遇到了同样的问题,value被放在引号中,这也意味着我需要创建两个永远的hiddenfields,这不是最有效的方法。有什么想法?
发布于 2012-07-13 00:40:35
通过标记添加时,不能将<%= %>命令作为属性的一部分。
我可以建议您使用<asp:Repeater>控件,而不是在ASPX中使用for循环吗?这还允许您从代码隐藏中设置CommandAttribute值。
举个例子。
<asp:Repeater runat="server" id="receipts" OnItemDataBound="receipts_ItemDataBound">
<ItemTemplate>
<tr>
<td><%#((WebReceiptSummary)Container.DataItem).Type%></td>
<td><%#((WebReceiptSummary)Container.DataItem).PolicyNo%></td>
<td><%#((WebReceiptSummary)Container.DataItem).Date%></td>
<td class="c"><%#((WebReceiptSummary)Container.DataItem).Amount%></td>
<td class="r"><asp:LinkButton ID="pdfLink" OnCommand="PDFLinkClick" runat="server">View PDF</asp:LinkButton></td>
</tr>
</ItemTemplate>
</asp:Repeater>在你的Init中或者在后台加载代码...
receipts.DataSource = GetReceipts();
receipts.DataBind();然后..。
protected void receipts_ItemDataBound(Object sender, RepeaterItemEventArgs e)
{
((LinkButton)e.Item.FindControl("pdfLink")).CommandArgument =
((WebReceiptSummary)e.DataItem).PDF + ((WebReceiptSummary)e.DataItem).PolicyNo;
}更新
考虑到这一点,而不是使用CommandArgument的代码隐藏设置,我认为(我还没有对此进行测试)您实际上可以在不需要receipts_ItemDataBound函数的情况下执行以下操作……
<td class="r"><asp:LinkButton ID="pdfLink" OnCommand="PDFLinkClick" runat="server"
CommandArgument="<%#((WebReceiptSummary)Container.DataItem).PDF + ((WebReceiptSummary)Container.DataItem).PolicyNo%>"
>View PDF</asp:LinkButton></td>更新2
以上示例中的所有Container.DataItem实例都已更改为紧绑定的((WebReceiptSummary)Container.DataItem)
https://stackoverflow.com/questions/11456505
复制相似问题