网格视图项模板的条件逻辑(仅使用标记)

本文关键字:条件逻辑 视图 网格 | 更新日期: 2023-09-27 18:35:38

我有一个网格视图,如下所示。当 EmpType 为合约时,EmpID 必须被屏蔽为"XXX"; 对于正式员工,应显示实际的 EmpID。此外,当它被屏蔽时,我需要在 EmpID 列中添加一个按钮控件

我需要使用标记来做到这一点;而不是使用代码隐藏。我们如何为Gridview的ItemTemplate编写此逻辑的条件逻辑?

注意:.Net 4.0

    <asp:GridView ID="Gridview1" runat="server" AutoGenerateColumns="False">
        <Columns>
            <asp:BoundField HeaderText="AssociateID" DataField="AssociateID" />
            <asp:TemplateField HeaderText="EmpID">
                <ItemTemplate>
                    <%# Eval("EmpID")%>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField HeaderText="EmpType" DataField="EmpType" />
        </Columns>
    </asp:GridView>

代码隐藏

    List<Associate> associatesList = new List<Associate>();
    associatesList.Add(new Associate { AssociateID = 1, EmpID = 101, EmpType = "Contract" });
    associatesList.Add(new Associate { AssociateID = 2, EmpID = 102, EmpType = "Regular" });
    Gridview1.DataSource = associatesList;
    Gridview1.DataBind();

网格视图项模板的条件逻辑(仅使用标记)

试试这个

<%# Eval("EmpType") == "Contract" ? "XXX" : Convert.ToString(Eval("EmpID"))%>

而不是

 <%# Eval("EmpID")%>

以下作品

 <asp:TemplateField HeaderText="EmpID">
                <ItemTemplate>
                    <%# Convert.ToString(Eval("EmpType")) == "Contract" ? "XXX" : Convert.ToString(Eval("EmpID"))%>
                    <asp:Button ID="Button1" runat="server" Text="Button" 
                    Visible='<%# Eval("EmpType") == "Contract" ? true : false %>' />
                </ItemTemplate>
            </asp:TemplateField>

相关:

行号可以通过以下 获取 GridView 使用上一页选定的行值

CommandArgument="<%# ((GridViewRow)Container).RowIndex %>"