ASP.net自訂伺服器控制項之GridViewControl

來源:互聯網
上載者:User

根據項目需要,提供自訂伺服器控制項之 GridViewControl,提供資料為空白時的自訂顯示。

[DefaultProperty("EnableEmptyContentRender")]
[ToolboxData("<{0}:GridViewControl runat=server></{0}:GridViewControl>")]
public class GridViewControl : System.Web.UI.WebControls.GridView
{
     /// <summary>
     /// 是否資料為空白時顯示標題列
     /// </summary>
     private bool _enableEmptyContentRender = true;
     /// <summary>
     /// 是否資料為空白時顯示標題列
     /// </summary>
     [Bindable(true)]
     [Category("Appearance")]
     [DefaultValue("")]
     [Localizable(true)]
     public bool EnableEmptyContentRender
     {
         set { _enableEmptyContentRender = value; }
         get { return _enableEmptyContentRender; }
     }
     /// <summary>
     /// 是否資料為空白時顯示標題列
     /// </summary>
     private string _EmptyDataCellCssClass;
     /// <summary>
     /// 為空白時資訊儲存格樣式類
     /// </summary>
     [Bindable(true)]
     [Category("Appearance")]
     [DefaultValue("")]
     [Localizable(true)]
     public string EmptyDataCellCssClass
     {
         set { _EmptyDataCellCssClass = value; }
         get { return _EmptyDataCellCssClass; }
     }
     /// <summary>
     /// 為空白時輸出內容
     /// </summary>
     /// <param name="writer"></param>
     protected virtual void RenderEmptyContent(HtmlTextWriter writer)
     {
         //Create Header Table
         Table tblHeader = new Table();
         //Copy All Property
         tblHeader.CssClass = this.CssClass;
         tblHeader.GridLines = this.GridLines;
         tblHeader.BorderStyle = this.BorderStyle;
         tblHeader.BorderWidth = this.BorderWidth;
         tblHeader.CellPadding = this.CellPadding;
         tblHeader.CellSpacing = this.CellSpacing;
         tblHeader.HorizontalAlign = this.HorizontalAlign;
         tblHeader.Width = this.Width;
         tblHeader.CopyBaseAttributes(this);
         TableRow rowHeader = new TableRow();
         tblHeader.Rows.Add(rowHeader);
         rowHeader.CssClass = "TableHeader";
         //Generate Table Header
         foreach (DataControlField f in this.Columns)
         {
             TableCell cell = new TableCell();
             cell.Text = f.HeaderText;
             rowHeader.Cells.Add(cell);
         }
         TableRow rowBody = new TableRow();
         tblHeader.Rows.Add(rowBody);
         TableCell cellBody = new TableCell();
         cellBody.CssClass = this._EmptyDataCellCssClass;
         if (this.EmptyDataTemplate != null)
             //the second row, use the template
             this.EmptyDataTemplate.InstantiateIn(cellBody);
         else
             //the second row, use the EmptyDataText
             cellBody.Text = this.EmptyDataText;
         cellBody.HorizontalAlign = HorizontalAlign.Left;
         cellBody.ColumnSpan = this.Columns.Count;
         rowBody.Cells.Add(cellBody);
         tblHeader.RenderControl(writer);
     }
     protected override void Render(HtmlTextWriter writer)
     {
         if (_enableEmptyContentRender && (this.Rows.Count == 0 || this.Rows[0].RowType ==  DataControlRowType.EmptyDataRow))
             RenderEmptyContent(writer);
         else
             base.Render(writer);
     }
}

本文出自 “學習成就夢想” 部落格,請務必保留此出處http://qijinchao.blog.51cto.com/1140455/263635

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.