附加欲望输出(记录)) 现在我可以添加多个链接到记录列,但不能添加多个图像按钮与命令名称和命令参数 我试图通过从后面的代码调用GetRecordLinks(Eval(“Records”))`来动态创建图像按钮,下面是我的代码
<asp:ListView ID="Student" runat="server" OnItemCommand="Student_ItemCommand" OnItemDeleting="Student_ItemDeleting" OnItemDataBound="Student_OnItemDataBound">
<LayoutTemplate>
<table class="DataGrid">
<tr class="HeaderRow">
<td style="width: 150px;">Name</td>
<td style="width: 200px;">Class(s)</td>
<td style="width: 150px;">Sex</td>
<td style="width: 200px;">Recordss</td>
<td style="width: 150px;">Status</td>
<td style="width: 30px; text-align: center;">Activate/Delete</td>
</tr>
<asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<b><%# Eval("StudentLastName") %>, <%# Eval("StudentFirstName") %> <%# Eval("StudentMiddleName") %></b>
</td>
<td>
<%# JoinStringList(Eval("class")) %>
</td>
<td> <%# Eval("sex") %></td>
<td>
<%# GetRecordLinks(Eval("Records")) %>
</td>
<td>
<%# Eval("StatusID").ToString()=="0"?"Inactive":"Active" %>
</td>
<td style="text-align: center;">
<asp:ImageButton ImageUrl="img/Refresh.png" ID="StudentActive" runat="server" CommandName="Active" Visible='<%#Eval("StatusID").ToString()=="0"?true:false%>' CommandArgument='<%# Eval("StudentGUID") %>' />
<asp:ImageButton ImageUrl="img/delete.png" ID="StudentDelete" runat="server" CommandName="Delete" Visible='<%#Eval("StatusID").ToString()=="0"?false:true%>' CommandArgument='<%# Eval("StudentGUID") %>' />
</td>
</tr>
</ItemTemplate>
</asp:ListView>
GetRecordLinks
方法
我想为每个学生记录添加带有CommandName
,Visible
,CommandArgument
的asp:ImageButton。
如果学生A在一个单元格中每5条记录有5条记录,则应该有5个带有iteamcommand的图像按钮,以便我可以根据使用意愿删除或激活记录。
public string GetRecordLinks(object obj)
{
if (obj != null)
{
List<AppointmentDoc> docs = (List<AppointmentDoc>)obj;
StringBuilder sb = new StringBuilder();
foreach (AppointmentDoc rec in docs)
{
sb.Append("<a target='_blank' href=\"result.ashx?uuid=" + rec.UUID.ToString() + "\">" + rec.Name.Replace("student", "").Trim() + " (" + rec.SignedBy + ")" + (rec.staffSigned ? "*" : "") + "</a><br/>");
}
return sb.ToString();
}
return "";
}
希望了解我的问题 如果有任何疑问,请告诉我
感谢
答案 0 :(得分:0)
您可以使用PlaceHolder并将ImageButtons添加到其中。首先,替换:
<td>
<%# GetRecordLinks(Eval("Records")) %>
</td>
使用:
<td>
<asp:PlaceHolder ID="phRecords" runat="server" />
</td>
然后在代码隐藏中:
void Student_OnItemDataBound(object sender, ListViewItemEventArgs e)
{
...
PlaceHolder phRecords = e.Item.FindControl("phRecords") as PlaceHolder;
ImageButton imgButton = new ImageButton();
// Set the ImageButton properties here
ph.Controls.Add(imgButton);
}
那会添加一个按钮。您可以将ImageButton创建代码放在循环中,以便在同一个单元格中添加其中的几个。
您还必须在每次回发时重新创建这些ImageButtons,因此您可能需要在Page_Load方法中绑定数据。