Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在数据网格中的两个单元格之间执行计算_C#_Wpf - Fatal编程技术网

C# 在数据网格中的两个单元格之间执行计算

C# 在数据网格中的两个单元格之间执行计算,c#,wpf,C#,Wpf,我有一个WPF数据网格,我想对现有数量进行计算。 如果QtyOnHandSetMax(文本),则将结果显示在状态列中。我该怎么做呢。到目前为止,我找到的每一个教程都是针对WinForms的,并不适用于WPF数据网格 我是这里的新手,所以如果有人愿意为我指出正确的方向,我不反对去弄清楚这一点。 我正在从数据集填充网格 void mainDataSet() { SqlConnection con = new SqlConnection(str); Sq

我有一个WPF数据网格,我想对现有数量进行计算。
如果QtyOnHandSetMax(文本),则将结果显示在状态列中。我该怎么做呢。到目前为止,我找到的每一个教程都是针对WinForms的,并不适用于WPF数据网格

我是这里的新手,所以如果有人愿意为我指出正确的方向,我不反对去弄清楚这一点。

我正在从数据集填充网格

   void mainDataSet()
    {
        SqlConnection con = new SqlConnection(str);
        SqlDataAdapter dataAdapter = new SqlDataAdapter(select, con);
        con.Open();
        SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
        con.Close();
        DataSet ds = new DataSet();
        dataAdapter.Fill(ds);
        dataGridView1.IsReadOnly = true;
        dataGridView1.DataContext = ds.Tables[0];

    }

为什么不添加一个具有计算的属性并将列绑定到该属性? 根据你关于(文本)的注释,我假设这些实际上是字符串值,而不是小数。。。因此,转换它们(它们是否可能为null?)并比较并返回您喜欢的状态字符串。注意:下面的示例假设setmin和setmax永远不会为null或转换失败,如果qtyonhand在边界内,则不会返回任何状态(空白)

public string Status
    {
        get
        {
            decimal _min = Convert.ToDecimal(this.SetMin);
            decimal _max = Convert.ToDecimal(this.SetMax);
            string _status = string.Empty;
            if (this.QtyOnHand < _min)
                _status = "whatever the status is that means not enough on hand.";
            if(this.QtyOnHand > _max)
                _status = "whatever the status is that means too much is on hand.";

            return _status;
        }
    }
公共字符串状态
{
得到
{
decimal _min=Convert.ToDecimal(this.SetMin);
decimal _max=Convert.ToDecimal(this.SetMax);
string _status=string.Empty;
如果(此.QtyOnHand<\u min)
_status=“无论状态如何,这意味着手头不够。”;
如果(this.QtyOnHand>\u max)
_status=“无论状态如何,都意味着手头有太多的东西。”;
返回状态;
}
}

您的代码在哪里?这有很大的不同。你一定是模特吗?如果是这样,请在属性getter中进行计算……要执行您要求的操作,首先需要将数据集泵入模型。然后,在您的模型属性中,您可以应用任何您喜欢的过滤器(请参见,去阅读关于模型的内容:)来帮助您的研究搜索词将是“MVVM”、“数据绑定”、“DataGrid DataTemplate”、“OnPropertyChanged”除非我正在用SQL server中的数据集填充网格。@eternityhq获取数据集并用映射到属性的数据列填充类。创建一个名为Status的属性(在上面,但使用INotifyPropertyChange),该属性基于其他属性构建并报告状态。然后绑定到网格中的类。将InotifyPropertyChanged操作放入属性中。@OmegaMan感谢您的帮助。我将尝试您的建议,我确实让它正常工作了,我将为其他人发布代码。如果您更方便,您还可以将属性添加到SQL查询/存储过程中以返回字段。