FieldTemplates / Text_Edit.ascx.csで文字列の動作を変更します。最初にバリデーターを削除します。これは、フォームの送信を妨げるためです。
protected void Page_Load(object sender, EventArgs e) {
TextBox1.MaxLength = Column.MaxLength;
if (Column.MaxLength < 20)
TextBox1.Columns = Column.MaxLength;
TextBox1.ToolTip = Column.Description;
if (Column.IsString)
{
this.Controls.Remove(RequiredFieldValidator1);
this.Controls.Remove(RegularExpressionValidator1);
this.Controls.Remove(DynamicValidator1);
}
else
{
SetUpValidator(RequiredFieldValidator1);
SetUpValidator(RegularExpressionValidator1);
SetUpValidator(DynamicValidator1);
}
}
空の文字列をNULLに変換するコードは、ConvertEditedValueメソッドのどこかにあるため、文字列の場合はスキップしてください。
protected override void ExtractValues(IOrderedDictionary dictionary)
{
if (Column.IsString)
{
dictionary[Column.Name] = TextBox1.Text;
}
else
{
dictionary[Column.Name] = ConvertEditedValue(TextBox1.Text);
}
}
空の文字列でテーブルを更新できるようになりました。もちろん、デフォルト値のフィールドだけでなく、すべてのvarcharフィールドに空の文字列を設定できるという問題があります。
Linq to SQLまたはEFデータモデルのどこにも、SQL-Serverのデフォルト値を確認できる場所がありません。DefaultValueプロパティがありますが、常にNULLです。