试做一个复合控件,由两个DropDownList组成。接收外部传进来的datasouce,暂指定类型为datatable。两个DropDownList的datasouce为该datatable的不同视图。但是在用的时候发现两个DropDownList绑定的内容都一样,都是第二个DropDownList所绑定的内容,不知道是什么原因?
部分代码如下: [Bindable(true), Category("Data"), DefaultValue(null), Description("The data source"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public object DataSource
{
get
{
EnsureChildControls();
return _DataSouce; }
set
{
EnsureChildControls();
_DataSouce = value; ddl1 = new DropDownList();
ddl2 = new DropDownList(); DataTable dt = (DataTable)(_DataSouce);
DataView dv1 = new DataView();
dv1 = dt.DefaultView;
dv1.RowFilter = "len(ID) = 3";
ddl1.DataSource = dv1;

DataView dv2 = dt.DefaultView;
dv2.RowFilter = "len(ID) = 6 and ID like '001%'";
ddl2.DataSource = dv2;

}

} protected override void CreateChildControls()
{
Controls.Clear(); ddl1 = new DropDownList();
ddl1.ID = "ddl1";
ddl1.Height = Unit.Pixel(25);
Controls.Add(ddl1); ddl2 = new DropDownList();
ddl2.ID = "ddl2";
ddl2.Height = Unit.Pixel(25);
Controls.Add(ddl2); //base.CreateChildControls (); }
程序中没有重写DataBind,望dx赐教啊

解决方案 »

  1.   

    ddl1 = new DropDownList();为什么出现了两次它的初始,代码不太全,不好判断。
      

  2.   

    这里是全部的代码,不知道哪边有问题
    using System;
    using System.Web.UI;
    using System.ComponentModel;
    using System.Web.UI.WebControls;
    using System.Collections;
    using System.Data;
    using System.Web;
    using System.Collections.Specialized;namespace WmsControlLibrary
    {
    /// <summary>
    /// DualDropDownList 的摘要说明。
    /// </summary>
    /// 
    /// 
    [ToolboxData(" <{0}:DualDropDownList runat='server' style='position:absolute; width:500px; height:25 px'/>") ]
    public class DualDropDownList:System.Web.UI.WebControls.WebControl, INamingContainer
    {
    public DualDropDownList()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    private System.Web.UI.WebControls.DropDownList ddl1 = null;
    private System.Web.UI.WebControls.DropDownList ddl2 = null;
    private object _DataSouce = null;
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public Unit DropDownListWidth
    {
    get
    {
    EnsureChildControls();
    return this.ddl1.Width;
    }
    set
    {
    EnsureChildControls();
    this.ddl1.Width = value;
    this.ddl2.Width = value;
    }
    }
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public string FieldValue
    {
    get
    {
    EnsureChildControls();
    return this.ddl1.DataValueField;
    }
    set
    {
    EnsureChildControls();
    this.ddl1.DataValueField = value;
    this.ddl2.DataValueField = value;
    }
    } [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public string FieldText
    {
    get
    {
    EnsureChildControls();
    return this.ddl1.DataTextField;
    }
    set
    {
    EnsureChildControls();
    this.ddl1.DataTextField = value;
    this.ddl2.DataTextField = value;
    }
    } [Bindable(true), Category("Data"), DefaultValue(null), Description("The data source"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public object DataSource
    {
    get
    {
    EnsureChildControls();
    return _DataSouce; }
    set
    {
    EnsureChildControls();
    _DataSouce = value;// ddl1 = new DropDownList();
    // ddl2 = new DropDownList(); DataTable dt = (DataTable)(_DataSouce);
    DataView dv1 = new DataView();
    dv1 = dt.DefaultView;
    dv1.RowFilter = "len(ID) = 3";
    ddl1.DataSource = dv1;
    //ddl1.DataSource = _DataSouce;
    DataView dv2 = dt.DefaultView;
    dv2.RowFilter = "len(ID) = 6 and ID like '001%'";
    ddl2.DataSource = dv2;
    //ddl2.DataSource = _DataSouce;
    }

    } protected override void CreateChildControls()
    {
    Controls.Clear(); ddl1 = new DropDownList();
    ddl1.ID = "ddl1";
    ddl1.Height = Unit.Pixel(25);
    Controls.Add(ddl1); ddl2 = new DropDownList();
    ddl2.ID = "ddl2";
    ddl2.Height = Unit.Pixel(25);
    Controls.Add(ddl2); //base.CreateChildControls (); } }
    }