当前位置: 代码迷 >> .NET组件控件 >> web自定义控件的动态生成label跟textbox的代码。如何实现,才能让label跟textbox有个唯一的id,在使用控件时可以得到呀
  详细解决方案

web自定义控件的动态生成label跟textbox的代码。如何实现,才能让label跟textbox有个唯一的id,在使用控件时可以得到呀

热度:3282   发布时间:2013-02-25 00:00:00.0
web自定义控件的动态生成label跟textbox的代码。怎么实现,才能让label跟textbox有个唯一的id,在使用控件时可以得到呀
DataTable DT = new DataTable();
  public void CreateCtrl()// {

  DataSet ds = new DataSet();

  if (File.Exists(this.pBDataWindowsFilePathAndName))
  {

  ds.ReadXmlSchema(pBDataWindowsFilePathAndNameSchema);//读取xmlschema
  ds.ReadXml(this.pBDataWindowsFilePathAndName);//读取xml

  ds.Tables[0].DefaultView.Sort = "x aSC";
  DT = ds.Tables[0].DefaultView.ToTable();
  for (int i = 0; i < DT.Rows.Count; i++)
  {

  l = new LRB_Label();
  l.DataField = DT.Rows[i]["DataPropertyName"].ToString();
  l.Text = DT.Rows[i]["text"].ToString();
  l.Width = int.Parse(DT.Rows[i]["Columnwidth"].ToString()) / 4;


  t = new TextBox();
  t.ID = DT.Rows[i]["DataPropertyName"].ToString();
  t.Width = int.Parse(DT.Rows[i]["Columnwidth"].ToString()) / 4;

  this.Controls.Add(l);
  this.Controls.Add(t);

  }
  }


  }

上面是个web自定义控件的动态生成label跟textbox的代码。
怎么实现,才能让label跟textbox有个唯一的id,在使用控件时可以得到呀。。


我这样做
  public string TXT_ID
  {
  get
  {
  return t.ID;
  }

  set
  {
  t.ID = value;
  }
  }

只能得到一个。


------解决方案--------------------------------------------------------
继承INameContainer接口.

这样只要在控件内部指定: 
label.id = "lab";
textBox.id = "txt";
即可.

之后, Textbox的服务端UniqueID就是: this.ClientID + "$" + "txt;
TextBox的客户端ClientID就是:: this.ClientID + "_" + "txt;

到于前面设置的ID属性, 是我们起的名字, 如果设置重复, 编译器会报错, 不用担心命名重复问题.


  相关解决方案