更新时间: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 %>"