2009-07-18 17 views
0

Mit:Wenn FormView mit Vorlagen verwendet wird, ist es möglich, Steuerelemente statisch zu referenzieren?

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

verwendet man Findcontrol die txtFirstName Textbox in der Code-Behind-Datei zu verweisen:

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

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

ist es eine Möglichkeit, diese Steuerung statisch zu verweisen, ohne Findcontrol verwenden zu müssen?

VB.Net 
txtFirstName.Text = "George" 

C# 
txtFirstName.Text = "George"; 

Antwort

0

Nicht, dass ich weiß. Versuchen Sie, statisch zu referenzieren, damit der Compiler überprüft, ob Sie während der Kompilierung auf gültige Steuerelemente verweisen, oder versuchen, sie statisch zu referenzieren, damit die Arbeit einfacher ist?

Wenn es das letztere ist, habe ich nur eine Funktion erstellt, die Werte für mich in einem FormView abruft und setzt. Hier ist das grundlegende Layout:

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(... 
    ... 
    ... 
} 

Hoffe, dass hilft.

Verwandte Themen