知识大全 Asp.NET自定义DataGrid控件

Posted 属性

篇首语:君不见长松卧壑困风霜,时来屹立扶明堂。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Asp.NET自定义DataGrid控件相关的知识,希望对你有一定的参考价值。

Asp.NET自定义DataGrid控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  一              给控件提供支持绑定数据源的功能

  要实现很简单 只有从新类 CompositeDataBoundControl 派生 并实现CreateChildControls方法就可以了

  

  先做一个简单的例子理解一下这个类的使用

  代码

  using System;

  using System Collections;

  using System Collections Generic;

  using System Web;

  using System Web UI;

  using System Web UI WebControls;

  namespace XLSoft WebControls

  

  public class MyDataGrid : CompositeDataBoundControl

  

  public string DataName

  

  get

  

  object o = ViewState[ DataName ];

  if (o == null)

  return ;

  return (string)o;

  

  set ViewState[ DataName ] = value;

  

  protected override int CreateChildControls(IEnumerable dataSource bool dataBinding)

  

  int itemCount = ;

  if (dataBinding)

  

  foreach (object obj in dataSource)

  

  Label lbl = new Label();

  lbl Text = DataBinder GetPropertyValue(obj DataName) ToString() + | ;

  Controls Add(lbl);

  itemCount++;

  

  

  return itemCount;

  

  

  

  <MYUI:MyDataGrid ID= MyDataGrid runat= server DataName= text />

  代码

  protected void Page_Load(object sender EventArgs e)

  

  DataTable dt = new DataTable();

  dt Columns Add( text );

  DataRow dr = dt NewRow();

  dr [ ] = ;

  DataRow dr = dt NewRow();

  dr [ ] = ;

  dt Rows Add(dr );

  dt Rows Add(dr );

  this MyDataGrid DataSource = dt;

  this MyDataGrid DataBind()

  

  二              添加多列的属性

  上面的实验只是做了实现数据源控件的功能 如果是要做表格控件 其中的label就可以换成TableRow 并添加到Table 这样同样可以做出表格 不过只有一列(DataName) 当然可以把多个列名合并放在DataName中 考虑到列可能会有其他属性 比如HeaderText 这样做并不合理 于是换成 Colunms集合对象

  代码

  public class MyColunm

  

  public MyColunm()

  public MyColunm(string name string headertext string format)

  

  this _name = name;

  this _headerText = headertext;

  this _format = format;

  

  private string _name;

  private string _headerText;

  private string _format;

  public string Format

  

  get return _format;

  set _format = value;

  

  public string HeaderText

  

  get return _headerText;

  set _headerText = value;

  

  public string Name

  

  get return _name;

  set _name = value;

  

  

  public class MyColunmCollection : List<MyColunm>

  public class MyDataGrid : CompositeDataBoundControl

  

  private MyColunmCollection _colunms = new MyColunmCollection();

  public MyColunmCollection Colunms

  

  get return _colunms;

  

  protected override int CreateChildControls(IEnumerable dataSource bool dataBinding)

  

  Table table = new Table();

  if (dataBinding)

  

  TableHeaderRow trHeader = new TableHeaderRow();

  foreach (MyColunm col in Colunms)

  

  TableHeaderCell cell = new TableHeaderCell();

  cell Text = col HeaderText;

  trHeader Cells Add(cell);

  

  table Rows Add(trHeader); //Add Header Row

  foreach (object obj in dataSource)

  

  TableRow tr = new TableRow();

  foreach (MyColunm col in Colunms)

  

  TableCell cell = new TableCell();

  if (string IsNullOrEmpty(col Format))

  cell Text = DataBinder GetPropertyValue(obj col Name) ToString();

  else

  cell Text = DataBinder GetPropertyValue(obj col Name col Format);

  tr Cells Add(cell);

  

  table Rows Add(tr);

  

  

  Controls Add(table);

  return ;

  

  

  三 添加子标签

  简单来说 添加特性 ParseChildren(true Colunms ) 就可以把子标签作为属性填充到Colunms中

  

  关于ParseChildren MSDN有这样的解释:

   :在开发ASP NET 服务器控件时 ParseChildrenAttribute 类指示页分析器应如何处理页上声明的服务器控件标记中嵌套的内容

   :ParseChildrenAttribute 类允许您以 ParseChildrenAttribute 元数据属性标记服务器控件来为自定义服务器控件指定分析逻辑

   :以元数据属性 (Attribute) ParseChildren(true) 标记服务器控件将指示分析器把包含在服务器控件标记内的元素解释为属性 (Property)

   :以元数据属性 (Attribute) ParseChildren(true <Default Property> ) 标记服务器控件将把 DefaultProperty 属性 (Property) 设置为传递到该属性 (Attribute) 的属性 (Property) 名称

cha138/Article/program/net/201311/11912

相关参考

知识大全 ASP.NET中自定义DataGrid分页设置的实现

ASP.NET中自定义DataGrid分页设置的实现  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Asp.net 2.0 自定义控件开发

Asp.net2.0自定义控件开发  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  (一)概述  

知识大全 使用ASP.Net中的自定义控件

使用ASP.Net中的自定义控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  if((data

知识大全 Asp.net 用户控件添加自定义事件

Asp.net用户控件添加自定义事件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 使用ASP.Net中的自定义控件[4]

使用ASP.Net中的自定义控件[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[5]

使用ASP.Net中的自定义控件[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[2]

使用ASP.Net中的自定义控件[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[7]

使用ASP.Net中的自定义控件[7]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[3]

使用ASP.Net中的自定义控件[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 使用ASP.Net中的自定义控件[8]

使用ASP.Net中的自定义控件[8]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &