asp.net 動的データを使用しています。ユーザーのために自動入力したいフィールドがあります。ファイルは統合Windows認証で取得できるユーザー名です。
フィールド テンプレートを作成しましたが、挿入モードでは機能しますが、更新モードでは、別のユーザーがレコードを更新すると、新しいユーザー名が保存されるはずですが、保存されませんでした。
asp.net 動的データを使用しています。ユーザーのために自動入力したいフィールドがあります。ファイルは統合Windows認証で取得できるユーザー名です。
フィールド テンプレートを作成しましたが、挿入モードでは機能しますが、更新モードでは、別のユーザーがレコードを更新すると、新しいユーザー名が保存されるはずですが、保存されませんでした。
解決策を見つけたので、共有したいと思います。
UIHint
エンティティ フィールドを申請します。
[UIHint("UserName")]
public object Name { get; set; }
aa new を作成します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;
}
}
}