【发布时间】:2016-05-31 11:34:37
【问题描述】:
我有两个 xml 文件。如果从下拉列表中选择,则 XML 文件中的数据被移动到表中。但是当我点击第二个时只工作第一个xml文件,然后什么也没有发生,表格没有填满。我的错误在哪里?
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listView1.SelectedItems.Count > 0)
{
ListViewItem lv = listView1.SelectedItems[0];
textBox1.Text = lv.SubItems[1].Text;
textBox2.Text = lv.SubItems[2].Text;
textBox3.Text = lv.SubItems[3].Text;
}
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e)
{
if (comboBox1.SelectedIndex == 0)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
ds.ReadXml(@"C:\XMLFile1.xml");
dt = ds.Tables[0];
if (dt.Rows.Count > 0)
{
int i = 0;
foreach (DataRow Dr in dt.Rows)
{
ListViewItem lv = new ListViewItem(dt.Rows[i]["ID"].ToString());
lv.SubItems.Add(dt.Rows[i]["Name"].ToString());
lv.SubItems.Add(dt.Rows[i]["group"].ToString());
lv.SubItems.Add(dt.Rows[i]["document"].ToString());
i++;
listView1.Items.Add(lv);
}
}
if (comboBox1.SelectedIndex == 1)
{
DataSet ds1 = new DataSet();
DataTable dt1 = new DataTable();
ds1.ReadXml(@"C:\XMLFile1.xml");
dt1 = ds1.Tables[0];
if (dt1.Rows.Count > 0)
{
int i = 0;
foreach (DataRow qw in dt1.Rows)
{
ListViewItem lv = new ListViewItem(dt1.Rows[i]["ID"].ToString());
lv.SubItems.Add(dt1.Rows[i]["Name"].ToString());
lv.SubItems.Add(dt1.Rows[i]["group"].ToString());
lv.SubItems.Add(dt1.Rows[i]["document"].ToString());
i++;
listView1.Items.Add(lv);
}
}
}
【问题讨论】:
-
代码可能没有问题。 ListView 无法识别控件发生的任何更改,因此不会刷新控件。通常在填充之前清除行会有所帮助。 clear 方法调用控件的paint 方法,刷新控件,然后添加新数据就可以了。
-
但是如果我只选择第二个将填写表格的文件,它将是空的。填表应该是第一个还是第二个xml文件
-
如果只将第二个 xml 文件添加到 ListView 而不添加第一个文件会怎样?