【问题标题】:Formatting Gridview display in ASPX page在 ASPX 页面中格式化 Gridview 显示
【发布时间】:2011-10-28 03:34:57
【问题描述】:

Scenario:我有一个带有 Gridview 的 ASPX 页面。每一行都有一个列标题和它的值。在记录的末尾有一个通用行。

我的问题在于格式和 CSS。

我希望输出如下(我尝试过格式化,但发布后它会丢失)


|客户姓名 |微软 |

|客户城市 |西雅图 |

| |

|客户姓名 |道琼斯 |

|客户城市 |纽约 |

客户名称上方以该单元格为中心。同样,它的价值也是(微软)。此外,CustomerName 用深黑色着色,“Microsoft”用黑色着色。

'-----' 和 "|"实际上是表格边框/分隔符。典型的有边框、横线和竖线的表格。

请提出建议。下面是我的代码。

        <div style="width:400px; font-family:Arial; font-size:small">
      <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
        Width="100%" GridLines= "Horizontal">
        <Columns>
          <asp:TemplateField>
          <ItemTemplate> 


            <div style="color:Blue;font-weight:bold">
            <br />
            <tr>
              <td><asp:Label ID="Label5" runat="server" Text='Customer NAME' cssclass ="blackboldhdr" ></asp:Label></td>
              <td><asp:Label ID="Label1" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"DealerName") %>' cssclass ="blackboldtxt"></asp:Label></td>
            </tr>
            <tr>
              <td><asp:Label ID="Label2" runat="server" Text='Customer City'></asp:Label></td>
              <td><asp:Label ID="Label3" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"City") %>'></asp:Label></td>
            </tr>

            </ItemTemplate>
            </asp:TemplateField>
          </Columns>
        </asp:GridView>
    </div>    

            <style> 
    .blackboldtxt {
        font-family: Arial, Helvetica, sans-serif;
        font-size: 12px;
        color:black;
        font-weight: bold;

    }
    .blackboldhdr
    {
        font-family: Arial, Helvetica, sans-serif;
        font-size: 12px;
        /*color:#FFFFFF;*/
        background-color: #2A3C54;
        width: 152px; 
        text-align:center;
    }
</style> 

【问题讨论】:

  • 我认为你的 CSS 没有做你想做的事?它是如何出现的?您可能还想尝试老式的 Repeater 控件,而不是尝试强制 GridView 执行多个表格行。
  • 是的,CSS 没有达到我的预期。我尝试使用中继器但没有成功。 Gridview 按照 CSS 进行格式化有问题吗?
  • 您能否描述一下页面在运行时的实际显示方式以及它与您希望的显示方式有何不同?
  • 我附上了我得到的和我正在寻找的快照。谢谢
  • 您的 HTML 格式错误可能是问题所在。 GridView 将每一列吐出到一个表格单元格中,您正试图在其中写出行。我会使用中继器,或者将所有内容包装在该列内的 table 标记中。

标签: asp.net gridview css formatting


【解决方案1】:

我认为您不能在网格的 itemTemplate 中使用 &lt;tr&gt;&lt;td&gt; 元素。由于网格已经为每一行渲染了&lt;tr&gt;...&lt;/tr&gt;&lt;td&gt; {Item template's content} &lt;/td&gt;,因此结果将是无效的HTML 代码。

我认为您应该使用 Repeater 而不是 Grid,例如像这样:

<asp:Repeater>
  <HeaderTemplate><table class="..."></HeaderTemplate>
  <ItemTemplate>
    <tr>
      <td class="blackboldhdr">
        <asp:Label runat="server" Text='Customer NAME' cssclass="blackboldhdr"/>
      </td>
      <td>
        <asp:Label runat="server"  cssclass ="blackboldtxt"
           Text='<%#DataBinder.Eval(Container.DataItem,"DealerName") %>' />
      </td>
    </tr>
    <tr>
        ... same as above, but for customer address
    </tr>
  </ItemTemplate>
  <SeparatorTemplate><tr><td colspan="2">&nbsp;</td></tr>
  <FooterTemplate></table></FooterTemplate>
</asp:Repeater>

【讨论】:

  • 我使用了上面的 asp:Repeater,似乎比我使用 Gridview 得到的要好。我是否需要指定转发器的宽度,因为页面宽度增加了。目前我只有 还有如何获取每一行的垂直和水平线。我在原始帖子的附件中显示了这一点。
  • 我会使用 CSS 来设置边框、颜色等。例如在桌子上定义一个类,然后使用一些 CSS,如table.myClass td { border-bottom: solid 1px black; },等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
相关资源
最近更新 更多