SubVwr.Tables [0] .tbl是一个包含多个项目的表格,其中一些项目需要特定的Trace。那些需要跟踪的项目具有与之相关的序列号。为了解决这个问题,我为每个人创建了一个新窗口,我希望用户输入序列号。应该从上一个表(Subvwr)中提取新表(对话框)中的一些数据。如果我想在每行对话框中完成特定值的赋值,那么这里的语法是什么?
private void requestSerials()
{
// needs to check for a difference. If QtyRcvd has changed, then we need to request "QtyRcvd" number of serials
//for each row in our received order..
foreach (DataRow row in SubVwr.Tables[0].Tbl.Rows)
{
// check to see if it neesd to be traced..
if (row["TraceReq"].ToString() == "Y")
{
//if yes, create a serialInputDialogWindow
SerialInputDialogWindow dialog = new SerialInputDialogWindow()
{
Topmost = true
};
//Iterate through the dialogWindow before we display it to fill it with some necessary data.
var itemsSource = dialog.serialtable.ItemsSource as IEnumerable;
if (itemsSource != null)
{
foreach (var item in itemsSource)
{
var serialrow = item as System.Data.DataRowView;
serialrow["PN"] = "test"; //doesn't work
serialrow.Row["PN"] = "test"; //doesn't work
}
}
dialog.ShowDialog();
}
}
}
类似代码的一个例子。它按指定填充每行的特定列。我想从Subvwr获取数据并以类似的方式填充Dialog
foreach(DataRow row in SubVwr.Tables[0].Tbl.Rows)
{
row["DateRcvd"] = DateTime.Today;
row["QtyRcvd"] = row["QtyPer"];
}
答案 0 :(得分:0)
ItemsSource
中的项目属于某种类型。如果例如dialog.serialtable.ItemsSource
返回DataView
,您可以将项目转换为DataRowViews
,然后使用索引器访问任何列:
foreach (var item in itemsSource)
{
var serialrow = item as System.Data.DataRowView;
if (serialrow != null)
{
var name = serialrow["ColumnName"].ToString();
}
}
如果是IEnumerable<T>
且T
是YourClass
,则将其转换为此类型:
foreach (var item in itemsSource)
{
var serialrow = item as YourType;
if (serialrow != null)
{
var name = serialRow.Property1;
}
}