当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

Asp.NET自定义DataGrid控件

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

  要实现很简单,只有从新类 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 MyDataGrid1 : 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 = 0;

  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:MyDataGrid1 ID="MyDataGrid11" runat="server" DataName="text" />

  代码

  protected void Page_Load(object sender, EventArgs e)

  {

  DataTable dt = new DataTable();

  dt.Columns.Add("text");

  DataRow dr1 = dt.NewRow();

  dr1[0] = "111";

  DataRow dr2 = dt.NewRow();

  dr2[0] = "222";

  dt.Rows.Add(dr1);

  dt.Rows.Add(dr2);

  this.MyDataGrid11.DataSource = dt;

  this.MyDataGrid11.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;

  }

相关内容
赞助商链接