2014-09-03 48 views
0

我有一个名为ucTZones的用户控件 以下是usercontrol的代码。在设置其值之前填充usercontrol的下拉列表

public partial class ucTZones : UserControl{ 

     /// <summary> 
     /// Accessor for the time zone drop-down. 
     /// </summary> 
     public int ddlProp 
     { 
      get 
      { 
       try 
       { 
        return Int32.Parse(ddl.SelectedValue); 
       } 
       catch 
       { 
        return 1; 
       } 
      } 
      set 
      { 
       try 
       { 
        this.ddl.SelectedValue = value.ToString(); 
       } 
       catch 
       { 
        this.ddl.SelectedValue = "0"; 
       } 
      } 
     } 

     protected void Page_Load(object sender, EventArgs e) 
     { 
      if(!ispostback) 
       BindDropDown(); 

      } 

     private void BindDropDown() 
     { 
      ddl.datasource =somelist; 
      ddl.DataBind(); 
     } 
    } 

该用户控件在名为TZonePage 在下面的代码写入页面加载活动页面使用。

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 
       this.ucTZones.ddlProp=15; 
      } 
     } 

现在我的问题是我怎么能填充用户控件的DDL的 之前执行以下TZonePage的Page_Load中的线

this.ucTZones.ddlProp=15; 
+2

为什么不提供“DropDownList”数据源的属性?然后控制器(页面)负责正确的顺序,并且它也更加可重用。 – 2014-09-03 12:00:42

+0

谢谢蒂姆。让我执行并检查 – 2014-09-03 13:00:23

回答

1

通常情况下,你不应该使用在UserControlPage_Load(或其他页面的方法)对你已经注意到的原因。相反,您应该在触发逻辑的情况下使用UC中的方法或属性。在这种情况下,如果数据源已经加载,您也可以检查属性:

public int ddlProp 
{ 
    get 
    { 
     if(ddl.SelectedIndex == -1) 
      return -1; 
     return int.Parse(ddl.SelectedValue); 
    } 
    set 
    { 
     if(ddl.datasource== null) 
      BindDropDown(); 
     if(ddl.Items.FindByValue(value.ToString()) != null) 
      this.ddl.SelectedValue = value.ToString(); 
     else 
      this.ddl.SelectedValue = "0"; 
    } 
} 
0

你可以检查这个,我没有测试它

public partial class ucTZones : UserControl{ 
      /// <summary> 
      /// Accessor for the time zone drop-down. 
      /// </summary> 
      public int ddlProp 
      { 
       get 
       { 
        // your variable to get the value 
       } 
       set 
       { 
        // your variable to assign 
       } 
      } 

      protected void Page_Load(object sender, EventArgs e) 
      { 
       if(!ispostback) 
        BindDropDown(); 

       } 

      private void BindDropDown() 
      { 
       ddl.datasource =somelist; 
       ddl.DataBind(); 
ddl.SelectedValue = ddlProp; 
      } 
     } 
+0

这就是我在我的问题中提到的内容。它的解决方案在哪里? – 2014-09-04 04:19:49

+1

检查'BindDropDown()'函数 – vikas 2014-09-04 06:25:27