WPF - 从List <class>获取特定值

时间:2015-11-12 06:26:46

标签: c# arrays wpf database list

所以我的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中的所有值填充我的所有文本框?

2 个答案:

答案 0 :(得分:0)

据我所知,你有一个动态数量的DataRows。创建静态数量的TextBox以保存其值(与idx1tag1value1一样)并不是解决问题的最佳方法。

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>();

并在其中添加文本框名称。