1

GridViewでItemTemplatesの境界線を設定するには?

以下はGridviewコードです。

<div>
   <asp:GridView ID="GridView1" runat="server" 
    AutoGenerateColumns = "false" Font-Names = "Arial" 
    Font-Size = "11pt" AlternatingRowStyle-BackColor = "#C2D69B"  
    HeaderStyle-BackColor = "green" AllowPaging ="true"   
    OnPageIndexChanging = "OnPaging" OnRowDataBound = "RowDataBound"
    PageSize = "10" >
   <Columns>
    <asp:TemplateField>
        <HeaderTemplate>
            <asp:CheckBox ID="chkAll" runat="server" onclick = "checkAll(this);" />
        </HeaderTemplate> 
        <ItemTemplate>
            <asp:CheckBox ID="CheckBox1" runat="server" onclick = "Check_Click(this)"/>
        </ItemTemplate>
    </asp:TemplateField> 
    <asp:BoundField ItemStyle-Width = "150px" DataField = "CustomerID" HeaderText = "CustomerID" />
    <asp:BoundField ItemStyle-Width = "150px" DataField = "City" HeaderText = "City"/>
    <asp:BoundField ItemStyle-Width = "150px" DataField = "Country" HeaderText = "Country"/>
    <asp:BoundField ItemStyle-Width = "150px" DataField = "PostalCode" HeaderText = "PostalCode"/>
   </Columns> 
   <AlternatingRowStyle BackColor="#C2D69B"  />
</asp:GridView> 

すべての境界フィールドは境界線を取得していますが、ItemTemplated フィールドは取得していません。

4

2 に答える 2

1

回避策は、GridViewのRowDataBoundイベントを利用してこれを行うことです。

protected void MyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
     foreach (TableCell tc in e.Row.Cells)
     {
         tc.Attributes["style"] = "border-color: #c3cecc";
     }
}

詳細はこちら:http ://codersbarn.com/post/2009/05/31/Set-Color-of-GridLines-in-Gridview.aspx

より良い方法についてはコメントセクションを参照してください...

protected void Page_Load(object sender, EventArgs e)
{
   this.GridView1.Attributes.Add("bordercolor", "c3cecc");
}

「GridViewを使用すると、宣言型bordercolor属性は、個々のセルではなく、テーブル自体にのみ適用されるインラインスタイル宣言を追加します。

プログラムでbordercolor属性を追加すると、インラインスタイルは使用されませんが、ブラウザがテーブル内のすべての境界線に適用するHTMLbordercolorプロパティが使用されます。」

もう1つ、Eric Meyerのリセットを使用している場合、GridViewでのテーブルレンダリングが壊れます。この特定の問題の解決策は、リセットルールからすべてのテーブル要素を削除することです。

于 2012-04-18T05:13:02.887 に答える
0

ItemStyleフィールドを使用する必要があります。TemplateField のドキュメントにあります。

于 2012-04-18T05:09:18.813 に答える