2015-11-12 36 views
1

特定的值,所以我有List<data> dataList包括int idx, string tag, string value与此代码:WPF - 获取从列表<class>

List<data> dataList = new List<data>(); 
foreach (DataRow row in ds.Tables["info"].Rows) 
{ 
    dataList.Add(new data() { idx = (int)row["idx"], tag = (string)row["tag"], value = (string)row["value"] }); 
} 

我想从IDX,标签,值从具体指标具体数值。 例如,如果有3行idx,tag,值我想把所有的值放在文本框中,所以我为每个值创建了9个文本框。我试过这个代码,但我只有最后一行的值。我意识到我的代码是为了获得所有的价值,只打印最后一个。

foreach (data item in dataList) 
{ 
    idx1.Text = item.idx.ToString(); 
    tag1.Text = item.tag.ToString(); 
    value1.Text = item.value.ToString(); 
} 

但我意识到我的代码在这里是获得所有的价值,只打印最后一个。我怎样才能用dataList中的所有值填充我的所有文本框?

+0

你有多少个文本框?你的问题不是很清楚吗?请重新修改它以使其更易于理解。 –

回答

0

解决

我没有尝试过自己和dataList[i].idx.ToString()是我为它的答案。 所以我只是需要做一个循环:

for (int i = 0; i < idxBox.Count; i++) 
{ 
    idxBox[i].Text = dataList[i].idx.ToString(); 
    tagBox[i].Text = dataList[i].tag; 
    valueBox[i].Text = dataList[i].value; 
} 

但在此之前,我创建IDX,标签和值

List<TextBox> idxBox = new List<TextBox>(); 
List<TextBox> tagBox = new List<TextBox>(); 
List<TextBox> valueBox = new List<TextBox>(); 

3清单,并在其中添加文本框中的名称。

0

据我可以告诉你有一个动态数量的DataRows。创建一个静态数量的文本框来保存它们的值(就像你使用idx1,tag1value1)并不是解决问题的最佳方法。

A ListView可以容纳一个动态数量的行,所以它更适合您的情况。

你可以将其定义是这样的:

<ListView x:Name="listView"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Idx" DisplayMemberBinding="{Binding idx}"/> 
      <GridViewColumn Header="Tag" DisplayMemberBinding="{Binding tag}"/> 
      <GridViewColumn Header="Value" DisplayMemberBinding="{Binding value}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

并将项目添加这样的:

foreach (data item in dataList) 
{ 
    listView.Items.Add(item); 
} 
+0

是的感谢您的答案和建议尝试GridView,但它的不同情况。 – Mirza