如何在asp.net中访问usercontrol的值

时间:2012-01-11 13:01:13

标签: c# asp.net user-controls

我有一个网络应用程序,可以在一天内为学生分配持续时间。一种调度程序。

所以为此,我有一个用户控件为TimePeriod,并且该控件在网页上动态加载。

但是页面上用户控件的数量是不同的,所以我有一个代码可以动态创建一个用户控件列表。

例如,我将i值设置为2,实际上它会有所不同 看起来像这样:

for(int i=0;i<2;i++)
{
    TimePeriod ib = (TimePeriod)LoadControl("TimePeriod.ascx");
    //ib.RightArrowImgUrl = "~/images/wcm-circle-arrow-button.png";
    span_tempList.Controls.Add(ib);

}

当用户完成所有日期的时间更改时。即在页面上的所有用户控制中。

该页面有一个按钮,可以将此更改带到数据库。

但问题是如何从页面访问这些文本框值的值,因为它现在已经呈现为html。

这是我的用户控制码:---

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TimePeriod.ascx.cs" Inherits="ClassManagment.TimePeriod" %>


<div>
    <asp:TextBox ID="time3" size="10" value="08:00" runat="server"></asp:TextBox><asp:TextBox ID="time4" size="10" value="09:00"  runat="server"></asp:TextBox>

</div>

usercontrol后面的代码:--------

 public partial class TimePeriod : System.Web.UI.UserControl
 {
        protected global::System.Web.UI.WebControls.TextBox time3 = new System.Web.UI.WebControls.TextBox();
        protected global::System.Web.UI.WebControls.TextBox time4 = new System.Web.UI.WebControls.TextBox();


        public string TimeFrom
        {
            get { return time3.Text; }
            set { time3.Text = value; }
        }

        public string TimeTo
        {
            get { return time4.Text; }
            set { time4.Text = value; }
        }
 }

我如何访问usercontrol的值?

3 个答案:

答案 0 :(得分:1)

像这样:

TimePeriod ib = (TimePeriod)LoadControl("TimePeriod.ascx");
string timeTo = ib.TimeTo;
string timeFrom = ib.TimeFrom;

答案 1 :(得分:1)

在按钮点击处理程序上,您可以使用此类

string timeFrom = null;
string timeTo = null;

foreach (Control control in span_tempList.Controls)
{
     if (control is TimePeriod)
     {
         timeFrom = ((TimePeriod)control).TimeFrom.Text;
         timeTo = ((TimePeriod)control).TimeTo.Text;
         // Do something with these values
     }
}

答案 2 :(得分:0)

在您的类中保留动态生成的用户控件的全局数组,并直接访问这些存储的实例:

public partial class Foo : System.Web.UI.Page
{

   TimePeriod [] timePeriodArray = new TimePeriod[2];

   protected void Page_Load(object sender, EventArgs e)
   {
     for(int i=0;i<2;i++)
     {
         TimePeriod ib = (TimePeriod)LoadControl("TimePeriod.ascx");
         span_tempList.Controls.Add(ib);
         timePeriodArray[i] = ib;
     }

   }

然后您可以直接访问这些实例。