转发器中的样式表来自代码

时间:2015-09-14 13:38:51

标签: asp.net vb.net

嘿伙计们我需要帮助我正在开发的应用程序。

我正在尝试将css类/样式添加到表中,具体取决于我从数据库中获取的某个值(例如0 - 2)。

这是我需要更改表格样式的代码

Public Function projectType(ByVal value As Integer)
  Dim projectName As String
  If value = 0 Then
    projectName = "Project"
    mytable.AddAttributes("Style", "Background-color:#444444")  
  ElseIf value = 1 Then
    projectName = "Support"
  Else
    projectName = "Not available"
  End If
  Return projectName
End Function

标记:

<asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" RepeatColumns="1"
                RepeatDirection="Vertical" CellPadding="0" CellSpacing="0">
                <ItemTemplate>
                  <table cellpadding="0" cellspacing="0" style="width: 100%; text-align: left; border-bottom: 1px solid #999999;
                    padding-bottom: 15px;">
                    <tr>
                      <td style="width: 110px; vertical-align: top; padding-left: 20px; padding-top: 5px;
                        padding-bottom: 5px;">
                        <asp:Label ID="Label5" runat="server" Text='<%# projectType(Eval("Type")) %>' Font-Names="Verdana"
                          Font-Size="9pt" EnableTheming="false" />
                      </td>
                      <td style="width: 110px; vertical-align: top; padding-left: 20px; padding-top: 5px;
                        padding-bottom: 5px;">
                        <asp:Label ID="Label2" runat="server" Text='<%# hoursCheck(Eval("Duration")) %>'
                          Font-Names="Verdana" Font-Size="9pt" Style="text-align: right" EnableTheming="false" />
                      </td>
                    </tr>
                    <tr>
                      <td colspan="2" style="padding-bottom: 5px; padding-top: 5px; text-align: center">
                        <asp:Label ID="Label7" runat="server" Text='<%# Eval("FullName") %>' Font-Names="Verdana"
                          Font-Size="7pt" EnableTheming="false" />
                      </td>
                    </tr>
                  </table>
                </ItemTemplate>
              </asp:DataList>

从这个函数我需要通过获取发送者的父表来访问该表,因为我无法明确说我想要Datalist1,因为我有5个,我该怎么做?

1 个答案:

答案 0 :(得分:0)

首先,请摆脱内联样式并用CSS类替换它们。以后会为你节省很多麻烦。例如,有两个CSS类,一个用于&#34;项目&#34;另一个用于&#34;支持&#34;和&#34;不可用&#34;

至于实际问题,最容易想到的是将逻辑拆分为两个函数,一个用于文本,一个用于css类:

Public Function projectTypeText(ByVal value As Integer)
    ...
    Return projectName
End Function

Public Function projectTypeClass(ByVal value As Integer)
    ...
    Return projectCssClass
End Function

然后完全像你一样使用它:

<%-- This might actually need runat="server", not sure --%>
<table cellpadding="0" cellspacing="0" style='<%# projectTypeClass(Eval("Type")) %>'

<asp:Label ID="Label5" runat="server" Text='<%# projectType(Eval("Type")) %>'

注意:如果你绝对需要处理内联类,你可以让projectTypeStyle返回Background-color:#444444,但是在标记内你需要做那些令人讨厌的事情:

<table cellpadding="0" cellspacing="0" style='<%# "width: 100%; rest of styles; " + projectTypeStyle(Eval("Type")) %>'

这太可怕了,所以请不惜一切代价避免。