2012-05-30 16 views
0

我有一個gridview,如下所示。當EmpType是合約時,EmpID必須被屏蔽爲「XXX」;對於普通員工,應顯示實際的EmpID。另外,當它被屏蔽時,我需要在EmpID列中添加一個按鈕控件Gridview ItemTemplate的條件邏輯(僅使用標記)

我需要使用mark-up;不使用代碼。我們怎樣才能爲這個邏輯編寫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(); 

回答

3

個以下工作

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

相關:

行號可以通過以下Get GridView Selected Row Values using Page Previous Page

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

嘗試此相反的

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

<%# Eval("EmpID")%> 
+0

由於獲得。如何添加按鈕控件/控制控件的可見性 - 有條件?此外,還有一個警告:「警告:可能是非預期的參考比較;要獲得值比較,請在左側輸入'string'」 – Lijo

+0

您收到上述代碼的警告。我測試了沒有得到任何警告 – bvr

+0

使用<%#Convert.ToString(Eval(「EmpType」))==「Contract」的Overcame警告? 「XXX」:Convert.ToString(Eval(「EmpID」))%> ....按鈕控件怎麼樣?添加按鈕控件/控制按鈕控件的可見性 - 有條件? – Lijo