2012-04-18 62 views
1

如何在GridView中为ItemTemplates设置边框?如何在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字段。

回答

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属性不使用内联样式,但使用HTML bordercolor属性,这些浏览器应用于表内的所有边框。“

还有一件事,如果您使用Eric Meyer的重置,它会中断GridView中的表格呈现。该问题的解决方案是从重置规则中删除所有表格元素。