0

这是 DataGrid 对我的表所做的:

<table id="ContentPlaceHolder1_articleList" cellspacing="0" style="border-width:0px;border-collapse:collapse;" headertext="File Name" rules="all">

如何从表格中删除不必要的信息?

我不想要 cellSpacing,任何风格的东西。我用 CSS 处理所有这些,因为这些是内联的,所以它覆盖了我的 CSS 声明。

我不在乎是否存在 ID 或 rules="all" (甚至不确定它是做什么的)或 HeaderText 是否存在,但我很想摆脱其余的。

4

3 回答 3

2

正如 Curt 建议的那样,您可以使用Repeater控件来更好地控制输出。另一个选项是ListView控件,它为您提供比实际更多的选项Repeater

<asp:ListView ID="ListView1" runat="server">
    <LayoutTemplate>
        <table class="myclass">
            <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td><%# Eval("ColumnName", "{0:#,###} bytes") %></td>
        </tr>
    </ItemTemplate>
</asp:ListView>
于 2012-04-16T16:57:35.200 回答
1

如果您真的想完全控制您的桌子,我建议您改用中继器。与DataGrid控件不同的是,Repeater控件不会呈现不在内部的任何 HTML,ItemTemplate从而使您可以完全控制呈现的代码。

<table>
  <tr>
    <td>Column Header</td>
  </tr>
  <asp:repeater id="rep" runat="server">
    <itemtemplate>
      <tr>
        <td>
           <%#eval("ColumnName") %>
        </td>
      </tr>
  </asp:repeater>
</table>
于 2012-04-16T16:26:37.073 回答
0

由于 Eval/DataItem 会给 object/String 返回值。为了转换成 3,546 字节输出,需要将其转换成整数。对于该onitemdatabound事件,将需要注册。

标记

<asp:ListView ID="ListView1" runat="server" onitemdatabound="rpt_ItemDataBound">
    <LayoutTemplate>
        <table class="myclass">
            <asp:PlaceHolder ID="itemPlaceholder" runat="server" />
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td><asp:Label ID="lbl" runat="server" ></asp:Label></td>
        </tr>
    </ItemTemplate>
</asp:ListView>

代码背后

protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item)
    {
        Label lbl= (Label)e.Item.FindControl("lbl");
        lbl.Text = String.Format("{0:#,### bytes}", 
              Convert.ToInt32(((YourClassName)e.Item.DataItem).YourProperty);
    }
}
于 2012-04-16T17:09:28.363 回答