繁体   English   中英

ListView通过调用Eval()动态添加具有CommandName,Visible,CommandArgument的图像按钮

[英]ListView add image button with CommandName, Visible, CommandArgument dynamically by calling Eval()

附加的愿望输出(Record(s)))现在我可以向Records列添加多个链接,但是不能添加带有命令名称和命令参数的多图像按钮 在此处输入图片说明 我试图通过从后面的代码调用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方法

我想为每个学生记录追加带CommandNameVisibleCommandArgument asp:ImageButton。 例如,如果学生A在一个单元格中有5条记录,每条5条记录,则应使用iteamcommand具有5个imagebutton,以便我可以根据使用意愿删除或激活该记录。

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 "";
 }

希望了解我的问题让我知道是否有任何疑问

谢谢

您可以使用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创建代码放入循环中,以将其中几个添加到同一单元格中。

您还必须在每次回发时重新创建这些ImageButton,因此您可能需要将数据绑定到Page_Load方法中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM