【问题标题】:WPF - Custom Validation Rule for Record Insertion In DataGridWPF - DataGrid 中记录插入的自定义验证规则
【发布时间】:2016-09-23 19:49:33
【问题描述】:

现在我有一个窗口来操作我的一个数据库表中的记录,如下所示:

我通过从Data Source 选项卡拖动它得到了这个DataGrid 控件。而那个数据源其实是我在VS 2015中创建的DataSet项,这意味着一些强类型的数据库操作类会自动生成在一个.xsd文件中。所以,你看,基本上,Datagrid 背后的一切都是自动生成的,包括 xaml 和 C# 代码。

默认情况下,当您插入新记录时,您在单元格中输入的数据将根据其类型进行检查,如果您输入的内容与预期不符,第一个单元格中将显示红色感叹号。比如我表中的 IRD 列是 int 类型,如果你输入一些除数字以外的符号,你会得到那个红色的感叹号。

我现在要做的是限制用户输入8到9位,例如如果用户只输入3位:346,他/她会看到红色感叹号,并且无法继续插入记录。

【问题讨论】:

    标签: c# wpf datagrid dataset


    【解决方案1】:

    您将DataTable 用作ItemsSource 用于DataGrid,我说得对吗?如果是,那么让我展示如何验证您的单元格:

    this.YourDataTable.ColumnChanging += YourDataTableColumnChangingStuff;
    
    private void YourDataTableColumnChangingStuff(object sender, DataColumnChangeEventArgs e)
    {
       private void EmployeeDataTable_ColumnChanging(object sender, DataColumnChangeEventArgs e)
        {
             //if you want to leave previous value 
            if ("incorrect value" != e.ProposedValue.ToString())
                e.ProposedValue = e.Row.ItemArray[e.Column.Ordinal];
            else
            {
                //if you want to set new value
                e.ProposedValue = "new value";
            }            
        }
    }
    

    【讨论】:

    • 感谢@StepUp,我相信我们需要更多,只是设置列错误不足以阻止记录插入DataTable.rows 集合。我试过了。
    • @VincentZHANG 随时提出任何问题。如果您觉得我的回复对您有帮助,那么您可以将我的回复标记为答案,以简化日后其他人的搜索。请阅读此meta.stackexchange.com/questions/5234/…
    猜你喜欢
    • 2011-05-20
    • 2019-06-24
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 2018-02-18
    相关资源
    最近更新 更多