我有一个网络应用程序,可以在一天内为学生分配持续时间。一种调度程序。
所以为此,我有一个用户控件为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的值?
答案 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;
}
}
然后您可以直接访问这些实例。