2015-04-01 43 views
1

我有一个WPF数据网格,并且我想对HAND上的数量执行计算。
如果QtyOnHand < SetMin(Text)或If Qty> SetMax(Text)并将结果存储在Status列中。我将如何去做这件事。到目前为止,我发现的每个教程都是针对一个WinForms,并且不适用于WPF数据网格。在数据网格中的两个单元格之间执行计算

我是一个新手,所以我不反对如果有人愿意将我指向正确的方向,就不会反对。 enter image description here

我是从一个数据集

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]; 

    } 
+1

你的代码在哪里?它制造了巨大的差异。你有约束力吗?如果是这样的属性获得者的计算... – 2015-04-01 18:11:59

+1

要做你所要求的,你需要首先将你的数据集泵入模型。然后,在你的模型属性中,你可以应用你想要的任何过滤器 – 2015-04-01 18:33:21

+0

谢谢,关闭去阅读关于模型:) – eternityhq 2015-04-01 18:34:54

回答

1

填充电网为什么不列只是添加具有计算的属性并绑定到? 我假设你的笔记有关(文本),那些实际上是字符串值,而不是小数...所以转换它们(它可能是空的?)并比较并返回你喜欢的任何字符串的状态。请注意,下面的示例假定setmin和setmax永远不会为空或转换失败,并且如果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; 
     } 
    } 
+0

除了我用来自SQL服务器的数据集填充网格。 – eternityhq 2015-04-01 18:24:02

+1

@eternityhq获取数据集并填充一个类,并将数据列映射到属性。创建一个名为Status(上面但带有INotifyPropertyChange)的属性,该属性由其他属性构建并报告状态。然后绑定到网格中的类。 – OmegaMan 2015-04-01 18:31:44

+1

将InotifyPropertyChanged操作放入属性中。 – OmegaMan 2015-04-01 18:32:43

相关问题