【问题标题】:How can I set information on a cell in a datagrid based on its header or column?如何根据标题或列设置数据网格中单元格的信息?
【发布时间】:2009-12-01 16:55:02
【问题描述】:

我有一个 ASP.NET 2.0 DataGrid,如下所示:

<asp:DataGrid 
    runat="server"
    ID="_customerTable"
    CssClass="gridDisplay"
    HeaderStyle-CssClass="headerRow"
    AutoGenerateColumns="False"
>
    <Columns>
        <asp:TemplateColumn HeaderText="First Name">
            <ItemTemplate>
                <%# DataBinder.Eval(Container.DataItem, "FirstName") %>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="Last Name">
            <ItemTemplate>
                <%# DataBinder.Eval(Container.DataItem, "LastName") %>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="Address 1">
            <ItemTemplate>
                <%# DataBinder.Eval(Container.DataItem, "Address1") %>
            </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="Address 2">
            <ItemTemplate>
                <%# DataBinder.Eval(Container.DataItem, "Address2") %>
            </ItemTemplate>
        </asp:TemplateColumn>
    </Columns>
</asp:DataGrid>

问题是,我需要为列中满足特定条件的单元格设置一个 cssclass。我能想到的最好的方法似乎是一个相当丑陋的方法——要么专门做 e.Item.Cells[0]...[3]对于每一列,或者设置 ItemStyle-CssClass="firstName"..."address2",然后根据我的条件以及单元格的 cssclass 是否匹配来更新单元格的 cssclass。

不过,这似乎是一个非常丑陋的解决方案,所以我更喜欢任何关于更好方式的建议——如果存在的话。

【问题讨论】:

    标签: asp.net asp.net-2.0


    【解决方案1】:

    不确定你的标准是什么,但如果你有类似的东西:

    <asp:DataGrid
        ...
        <Columns>
            <asp:TemplateColumn HeaderText="First Name">
                <ItemTemplate>
                     <asp:Label ID='lbl' 
                         Text='<%# DataBinder.Eval(Container.DataItem, "FirstName") %>' 
                         CssClass= "%conditional_expression%"   />
                </ItemTemplate>
            </asp:TemplateColumn>                
        ...
        </Columns>
    </asp:DataGrid>
    

    假设您有 css 类 txtBlue 和 txtPink,并且条件基于 Gender 列,那么 conditional_expression 可能类似于:

    <% DataBinder.Eval(Container.DataItem, "Gender") == "Male" ? "txtBlue" : "txtPink" %>
    

    不确定上面的语法是否有效,只是一个建议。

    【讨论】:

    • 这适用于文本样式,但对于背景、轮廓、光标、垂直对齐等样式,您确实需要表格单元格本身的样式,而不是单元格内的跨度。
    • 糟糕,我指的是边框,而不是轮廓。 :)
    猜你喜欢
    • 1970-01-01
    • 2019-11-12
    • 2017-02-05
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2013-03-23
    相关资源
    最近更新 更多