所以我的List<data> dataList
包含int idx, string tag, string value
代码:
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,tag,特定索引的值中获取特定值。 例如,如果有来自idx,tag,value的3行我想将所有值放在textbox-es中,那么我为每个值创建9个textbox-es。我尝试了这段代码,但我只获得了最后一行的值。我意识到我的代码是获取所有价值而只打印最后一个。
foreach (data item in dataList)
{
idx1.Text = item.idx.ToString();
tag1.Text = item.tag.ToString();
value1.Text = item.value.ToString();
}
但我意识到我的代码是获取所有价值而只打印最后一个。如何用dataList中的所有值填充我的所有文本框?
答案 0 :(得分:0)
据我所知,你有一个动态数量的DataRows。创建静态数量的TextBox以保存其值(与idx1
,tag1
和value1
一样)并不是解决问题的最佳方法。
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);
}
答案 1 :(得分: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,tag和value创建了3个List
List<TextBox> idxBox = new List<TextBox>();
List<TextBox> tagBox = new List<TextBox>();
List<TextBox> valueBox = new List<TextBox>();
并在其中添加文本框名称。