2011-05-26 54 views

回答

2

我找到了一個解決方案,我想分享它。

申請UIHint爲實體領域:

[UIHint("UserName")] 
public object Name { get; set; } 

創造出一個新的FieldTemplate:爲FieldTemplate

<asp:TextBox ID="TextBox1" runat="server" ReadOnly="true" BorderStyle="None" 
BackColor="Transparent" Text='<%# FieldValueEditString %>'></asp:TextBox> 

後面的代碼:

public partial class UserName_EditField : FieldTemplateUserControl 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     SetUpValidator(RequiredFieldValidator1);  
     EditFieldTemplateUserControl.InsertHelpText(this); 
    } 

    protected override void OnDataBinding(EventArgs e) 
    { 
     base.OnDataBinding(e); 

     TextBox1.Visible = true; 
    } 

    protected string UserName 
    { 
     get 
     { 
      var name = this.Page.User.Identity.Name.ToString(); 
      return name; 
     } 
    } 

    protected override void ExtractValues(IOrderedDictionary dictionary) 
    { 
     if (Page.IsPostBack) 
     {// only assign value when user posts back. 
      this.TextBox1.Text = this.UserName.ToUpper(); 
      dictionary[Column.Name] = ConvertEditedValue(TextBox1.Text); 
     } 
    } 

    public override Control DataControl 
    { 
     get 
     { 
      return TextBox1; 
     } 
    } 
} 
+0

請在答案部分張貼的答案,而不是作爲問題的一部分。 – 2011-12-10 01:32:38

相關問題