【问题标题】:In asp.net dynamic data, how to use UIHint to create a auto-fill field?在asp.net动态数据中,如何使用UIHint创建自动填充字段?
【发布时间】:2011-05-26 19:00:14
【问题描述】:

我正在使用 asp.net 动态数据。我想为用户自动填写一个字段。该文件为用户名,可通过集成windows认证获取。

我创建了一个字段模板,它在插入模式下工作,但在更新模式下,一旦另一个用户更新了记录,新的用户名应该被保存,但它没有。

【问题讨论】:

    标签: asp.net templates field asp.net-dynamic-data


    【解决方案1】:

    我找到了一个解决方案,我想分享它。

    为实体字段申请UIHint

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

    创建一个新的FieldTemplate

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

    FieldTemplate 的代码隐藏:

    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;
            }
        }
    }
    

    【讨论】:

    • 请在答案部分发布答案,而不是作为问题的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2020-05-14
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多