2013-08-12 3 views
1

Я создал валидатор диапазона и хотел бы вызвать его после нажатия кнопки отправки.rangevalidator C# как использовать позже в коде

RangeValidator rv_tbAbsenceDay = new RangeValidator(); 
rv_tbAbsenceDay.ID = "rv_tbAbsenceDay" + tbAbsenceDay.ID; 
rv_tbAbsenceDay.ControlToValidate = tbAbsenceDay.ID; 
rv_tbAbsenceDay.EnableClientScript = true; 
rv_tbAbsenceDay.Display = ValidatorDisplay.Dynamic; 
rv_tbAbsenceDay.MinimumValue = DateTime.Now.AddMonths(-6).ToString("d"); 
rv_tbAbsenceDay.MaximumValue = DateTime.Now.ToString("d"); 
rv_tbAbsenceDay.ErrorMessage = "Date cannot be older than 6 months and not in the future."; 
rv_tbAbsenceDay.SetFocusOnError = true; 
plcMyStaff.Controls.Add(rv_tbAbsenceDay); 

plcMyStaff является заполнителем.

<asp:PlaceHolder ID="plcMyStaff" runat="server"></asp:PlaceHolder> 

Как получить удержание созданного диапазона валидатора, чтобы вызвать его, т.е. ?

Я попытался это:

protected void MarkAsSick_Command(Object sender, CommandEventArgs e) 
{ 
    DropDownList tempddlReason = (DropDownList)plcMyStaff.FindControl("ddlReason" + e.CommandArgument.ToString()); 
    TextBox temptbAbsenceDay = (TextBox)plcMyStaff.FindControl("tbAbsenceDay" + e.CommandArgument.ToString()); 
    TextBox temptbLastDayWorked = (TextBox)plcMyStaff.FindControl("tbLastDayWorked" + e.CommandArgument.ToString()); 
    RangeValidator temprv_tbAbsenceDay = (RangeValidator)plcMyStaff.FindControl("rv_tbAbsenceDay" + e.CommandArgument.ToString()); 
    temprv_tbAbsenceDay.validate(); 
... 

Надеется, что вы можете мне помочь.

спасибо,

Энди

+0

Где вы заявили свой экземпляр Валидатора? Является ли этот код одним и тем же классом? –

+0

Что происходит при выполнении команды MarkAsSick_Command? Вы проверили, есть ли контроль? I.E temprv_tvAsenceDay имеет экземпляр объекта? –

ответ

0

Во-первых, чтобы отладить это я предложил бы рассматривая plcMyStaff объект, в котором вы добавляете элемент управления, чтобы увидеть, если она действительно содержит элемент управления, который вы хотите получить доступ.

Вы должны иметь возможность получить его из объекта Page, который наследует ваш веб-форму.

Page.FindControl(); 

// Or you can Iterate through each control to see what the control is called and test for the name you want 
foreach (var control in Page.Controls) 
{ 

} 
Смежные вопросы