如题

解决方案 »

  1.   

    expose a method from your user control to change that, for example, in your user controlpublic void ChangeDefaultValue(string s )
    {
      DropDownList1.SelectedValue = s;
    }but if you insist, you could try (not recommended):DropDownList ddl = (DropDownList)YourUserControl.FindControl("DropDownList1");
    ddl.SelectedValue = s;
      

  2.   

    在用户控件类中,将DropDownList设置成public(或者定义一个属性) ,你就可以对他进行操作了
      

  3.   

    在 用户控件中定义一个公开的属性
      
     Public Property dd_value() As  integer
            Get
               return  dropdownlist1.selectindex
            End Get
            Set(ByVal Value As integer)
                dropdownlist1.selectindex= value
            End Set
     End Property 在 主页 .aspx.vb 中
      myurercontrol.dd_value= 4  就可以了!
      

  4.   

    to saucer(思归)
    可以把aspx.cs中的代码也写出来吗?
    其他兄弟也是一样~
    aspx.cs 中 我是这样的
    protected UserControl.ProductArea thisProductArea;
    private void Page_Load(object sender, System.EventArgs e)
    {
       thisProductArea = new project1.folder1.ProductArea;
       thisProductArea.ChangeDefaultValue("2");
    }
    但提示DropDownList1.SelectedValue = s;错误,信息如下
    未将对象引用设置到对象的实例。
    但我在ProductArea控件中直接调用ChangeDefaultValue完全正常
      

  5.   

    完整UserControl代码
    namespace Takasho.dbms.UserControl
    {
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using Takasho.Components; /// <summary>
    /// ProductArea 的摘要说明。
    /// </summary>
    public class ProductArea : System.Web.UI.UserControl
    {
    protected System.Web.UI.WebControls.DropDownList ProductAreaDList; private void Page_Load(object sender, System.EventArgs e)
    {
    DBCtrl dbc = new DBCtrl();
    DataSet dsList = new DataSet();
    dsList = dbc.ExcSelect("SELECT * FROM ProductArea WHERE FIsActive=true");
    ProductAreaDList.DataTextField = "FAreaCName";
    ProductAreaDList.DataValueField = "FAreaID";
    ProductAreaDList.DataSource = dsList.Tables["tableName"];
    ProductAreaDList.DataBind();
    dsList.Dispose();
    dbc.Close();
    dbc.Dispose();
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    public string DefaultSelectedValue
    {
    set{ ProductAreaDList.SelectedValue = value; }
    get{ return ProductAreaDList.SelectedValue; }
    }   }
    }
      

  6.   

    可以了,但是为什么在调有DefaultSelectedValue后,不能使用 Page.DataBind();呢?
      

  7.   

    UERCONTROL的Page_Load在页面的Page_Load之后执行