2009-07-18 1 views
0

Наличие:При использовании FormView с шаблонами, возможно ли ссылаться на элементы управления Static?

<asp:FormView ID="frmEmployee" runat="server"> 
    <EditTemplate> 
     <asp:TextBox ID="txtFirstName" runat="server" /> 
    </EditTemplate> 
</asp:FormView> 

один использует FindControl ссылаться на текстовое поле txtFirstName в файл с фоновым кодом:

VB.Net 
Dim txtFirstName As TextBox = CType(Page.FindControl("txtFirstName"), TextBox) 
txtFirstName.Text = "George" 

C# 
TextBox txtFirstName = (TextBox)Page.FindControl("txtFirstName"); 
txtFirstName.Text = "George"; 

есть способ ссылаться на этот элемент управления статически, без использования FindControl?

VB.Net 
txtFirstName.Text = "George" 

C# 
txtFirstName.Text = "George"; 

ответ

0

Не знаю, о чем я знаю. Стараетесь ли вы статически ссылаться на то, что компилятор будет проверять, ссылаетесь ли вы на правильные элементы управления во время компиляции или пытаетесь ссылаться на него статически, с чем проще работать?

Если это последнее, я просто создал функцию, которая получает и устанавливает значения для меня в FormView. Вот базовая схема:

public string GetValue(string id, ref FormView fv) 
{ 
    Control ctrl = fv.FindControl(id); 
    string value = ""; 

    if(ctrl is TextBox) 
    { 
     TextBox tb = (TextBox)ctrl); 
     value = tb.Text; 
    } 
    else if(ctrl is DropDownList) 
    { 
     DropDownList ddl = (DropDownList)ctrl; 
     value = ddl.SelectedValue; 
    } 
    else if(... 
    ... 
    ... 

    return(value); 
} 

public void SetValue(string id, string value, ref FormView fv) 
{ 
    Control ctrl = fv.FindControl(id); 

    if(ctrl is TextBox) 
    { 
     TextBox tb = (TextBox)ctrl); 
     tb.Text = value; 
    } 
    else if(ctrl is DropDownList) 
    { 
     DropDownList ddl = (DropDownList)ctrl; 
     ddl.SelectedValue = value; 
    } 
    else if(... 
    ... 
    ... 
} 

Надеюсь, что это поможет.

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