在Grid绑定之后,将TableSection = TableRowSection.TableHeader设置为最初,将标题行放在thead中.在回发(网格不重新绑定)之后,标题行还原到表格体.我期望标题行留在thead中;有人可以解释为什么不是这样或者我做错了什么?
样品:
点击按钮进行回发.在回发后,标题不是橙色,因为它不再是inad了.
ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="gridtest.aspx.cs" Inherits="ffff.gridtest" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <style type="text/css"> thead th { background-color:Orange;} </style> </head> <body> <form id="form1" runat="server"> <div><asp:Button ID="Button1" runat="server" Text="Button" /> this button is here just to trigger a postback</div> <asp:GridView ID="gv1" runat="server"></asp:GridView> </form> </body> </html>
码
using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace ffff { public partial class gridtest : System.Web.UI.Page { protected void Page_Load(object sender,EventArgs e) { gv1.DataBound += new EventHandler(gv1_DataBound); if (!IsPostBack) { BindGrid(); } } void Page_PreRender(object sender,EventArgs e) { if (gv1.HeaderRow != null) System.Diagnostics.Debug.WriteLine(gv1.HeaderRow.TableSection); // still TableHeader after postback } void gv1_DataBound(object sender,EventArgs e) { if (gv1.HeaderRow != null) { gv1.HeaderRow.TableSection = TableRowSection.TableHeader; } } private void BindGrid() { gv1.DataSource = this.Page.Controls; gv1.DataBind(); } } }