【问题标题】:How to set value in a field by UI?如何通过 UI 在字段中设置值?
【发布时间】:2014-01-17 01:57:31
【问题描述】:

我在 Sqlserver Datavbase 表中使用三个字段,以防止用户永久删除记录:

IsDelete (bit)
DeletedDate (DateTime)
DeletedUserID (bigint)

我希望通过 UI 设置第三个字段 (DeletedUserID),如下所示:

        this.ExamdbDataSet.AcceptChanges();
        DataRowView row = (DataRowView)this.BindingSource.Current;
        row.BeginEdit();
        row["DeletedUserID"] = User.User.Current.ID;
        row.EndEdit();
        this.ExamdbDataSet.AcceptChanges();
        row.Delete();

另外两个字段“IsDeleted”字段和“DeletedDate”在表的“删除触发器后”中自动设置。

然后使用以下代码成功地使用希望命令提交对数据库的更改:

        this.TableAdapterManager.UpdateAll(this.ExamdbDataSet);

但问题是,“DeletedUserID”在数据库中为空。

问题是:如何在 UI 中通过真实的方式设置 'DeletedUserID' 字段值?

【问题讨论】:

    标签: sql-server datarowview


    【解决方案1】:

    我认为这不是一个好方法。您已经将一个简单的逻辑分割为单独的部分,每个部分都在应用程序的不同部分(UI、触发器等)中完成。您设置某个字段的值,然后删除整个记录!不要指望其他任何事情,目前的情况。 您最好在 UI 中设置所有字段(即在这种情况下没有触发器),并更改加载数据的查询。例如,

    Select * from table1 where IsDeleted=0
    

    您没有告诉我们您使用的是 ASP.Net 还是 WinForms。给我们更多信息。

    【讨论】:

    • 我使用 Winform 和 DataSetDesigner(Dataset,BindingSource,TableAdapter,BindingNavigator,...)。我在“DeleteButton_Click()”中使用上述删除代码,然后在 after_Delete_trigger 中将删除记录插入到指定表中。在这个触发器中,我设置了“IsDeleted”和“DeletedDate”,但我必须通过 UI 设置“DeletedUserID”。
    • 好的。改变你做事的方式。例如,在您的 UI 中完成所有操作。
    • 一个问题是:删除检查约束。在Database Sqlserver检查约束中,如果我想在界面上这样做,我会遇到很多问题。
    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 2021-09-25
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多