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