函数在第一次执行时可以将DataGridView的内容显示,第二次执行时就不行了,请高手指点一下!
凭海听涛来 2006-10-26 03:14:54 下面的函数在第一次执行时可以将DataGridView的内容显示,第二次执行时就不行了,请高手指点一下!
private void button1_Click(object sender, EventArgs e)
{
int table = 1;
textBox1.Text = "";
openFileDialog1.ShowDialog();
textBox1.Text = openFileDialog1.FileName;
try
{
FileStream XmlFS = new FileStream(textBox1.Text.ToString(), FileMode.Open, FileAccess.Read);//打开指定的XML文件
dataSetXml.Clear();//清理dataSet
for (int tableremove = dataSetXml.Tables.Count - 1; tableremove > 1;tableremove-- ) dataSetXml.Tables.RemoveAt(tableremove);//只保留前2个表,删除其余表
sqlConnectionU8002.Open();
xmlReader = new XmlTextReader(XmlFS);
while (xmlReader.Read())
{
switch (xmlReader.NodeType)//判断结点
{
case XmlNodeType.Element:
switch (xmlReader.Name)
{
case "head": //表头记录开始
dataTableHead.Rows.Add(); //新增Head表(第0个表)中增加一条记录
string strTable = "dataTableBody" + table.ToString();
DataTable dt = dataTableBody.Clone();//用第1个的结构,构建新表
dt.TableName = strTable;
dataSetXml.Tables.Add(dt);//将新表加入表DataSet
table++;
break;
case "orderCode": //订单号
xmlReader.Read();
......
case "seq": //表体中新一条记录开始
dataSetXml.Tables[table].Rows.Add();//新增Body表中的一条记录
dataSetXml.Tables[table].Rows[dataSetXml.Tables[table].Rows.Count - 1][dataColumnHead.Ordinal] = dataTableHead.Rows[dataTableHead.Rows.Count - 1][dataColumnOID];
xmlReader.Read();
......
}
}
sqlConnectionU8002.Close();
dataGridView2.DataMember = dataSetXml.Tables[2].TableName;
dataGridView2.Refresh();
return;
}