且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

为GridView的ItemTemplate中条件逻辑(使用仅标记)

更新时间:2023-01-16 18:11:26

由于Vassy酒店的答案。完成code是

 < ASP:的TemplateField的HeaderText =的EmpID>
                <&ItemTemplate中GT;
                    <%#Convert.ToString(EVAL(的empType))==合同? XXX:Convert.ToString(EVAL(的EmpID))%GT;                    < ASP:按钮的ID =Button1的=服务器文本=按钮
                    可见='<%#的eval(的empType)==合同?真:假%GT;' />                < / ItemTemplate中>
            < / ASP:的TemplateField>

相关:

行号可以通过以下Get使用页面previous页GridView的选择行值

  CommandArgument =<%#((GridViewRow)集装箱).RowIndex%GT;

I have a gridview as shown below. When the EmpType is contract the EmpID must be masked as "XXX"; for regular employees, actual EmpID should be shown. Also, when it is masked, I need to add a button control in the EmpID column.

I need to do it using mark-up; not using code behind. How can we write the conditional logic for Gridview's ItemTemplate for this logic?

Note: .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>

CODE BEHIND

    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();

Thanks to vassy's answer. Complete code is

 <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>

Related:

Row number can be obtained by following Get GridView Selected Row Values using Page Previous Page

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