【问题标题】:Conditional Logic for Gridview ItemTemplate (using mark up only)Gridview ItemTemplate 的条件逻辑(仅使用标记)
【发布时间】:2012-05-30 06:28:58
【问题描述】:

我有一个如下所示的网格视图。当 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();

【问题讨论】:

    标签: c# asp.net .net vb.net gridview


    【解决方案1】:

    试试这个

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

    代替

     <%# Eval("EmpID")%>
    

    【讨论】:

    • 您收到上述代码的警告。我测试了没有收到任何警告
    • 已编辑。很高兴您克服了警告,我认为没有必要将 EmpType 转换为字符串,因为它已经是一个字符串,并且您可以从后面的代码中控制控件的可见性。
    • 绝对荒谬。如果我们不应该使用全局变量,并且 ItemTemplate 在生成静态停滞内容之外完全没用,那么我为什么还要使用 ASP。我已经开始使用请求存储来存储数据集,并将它们循环到普通的 块中,这样我就可以对我的页面做一些有用的事情了。为什么同样的问题已经存在了 9 年,而且他们还没有对整个 ASP 产生任何改进。
    【解决方案2】:

    以下作品

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      相关资源
      最近更新 更多