2015-11-12 37 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