public static DataTable ToDataTable(IList list)
{
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
foreach (PropertyInfo pi in propertys)
{
result.Columns.Add(pi.Name);
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in propertys)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
XmlDocument xmlDoc = new XmlDocument();
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;//忽略文档里面的注释
XmlReader reader = XmlReader.Create(@"e:\test.xml", settings);
xmlDoc.Load(reader);
//得到根节点
XmlNode xn = xmlDoc.SelectSingleNode("ZMBJZ");
//得到根节点的所有子节点
XmlNodeList xnl = xn.ChildNodes;
foreach (XmlNode xn1 in xnl)
{
cls_XTZMBJ zmbj = new cls_XTZMBJ();
// 将节点转换为元素,便于得到节点的属性值
XmlElement xe = (XmlElement)xn1;
// 得到Type和ISBN两个属性的属性值
zmbj.ID = int.Parse(xe.GetAttribute("nID").ToString());
zmbj.Name = xe.GetAttribute("cTBMC").ToString();
zmbj.SSFZ = xe.GetAttribute("nSSZH").ToString();
zmbj.TBBH = xe.GetAttribute("ZMTB").ToString();
ZMBJModeList.Add(zmbj);
}
DataTable dt = new DataTable();
dt = ToDataTable(ZMBJModeList);
dataGridView1.DataSource = dt;
DataGridViewComboBoxCell cb = new DataGridViewComboBoxCell();
cb.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (cb.Items.IndexOf(dataGridView1.Rows[i].Cells[2].Value.ToString()) == -1)
{
cb.Items.Add(dataGridView1.Rows[i].Cells[2].Value.ToString());
}
}
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DataGridViewComboBoxCell cb1 = new DataGridViewComboBoxCell();
//cb.Items.Add(dataGridView1.Rows[i].Cells[2].Value.ToString());
for (int j = 0; j < cb.Items.Count; j++)
{
cb1.Items.Add(cb.Items[j].ToString());
}
dataGridView1.Rows[i].Cells[2] = cb1;
}
reader.Close();
ZMBJModeList = new List<cls_XTZMBJ>();
foreach (DataGridViewRow dgvr in dataGridView1.Rows)
{
cls_XTZMBJ zmbj = new cls_XTZMBJ();
// 将节点转换为元素,便于得到节点的属性值
zmbj.ID = int.Parse(dgvr.Cells[0].Value.ToString());
zmbj.Name = dgvr.Cells[1].Value.ToString();
zmbj.SSFZ = dgvr.Cells[2].Value.ToString();
zmbj.TBBH = dgvr.Cells[3].Value.ToString();
ZMBJModeList.Add(zmbj);
}
List<string> ListTemp = new List<string>();
foreach (cls_XTZMBJ zmbj in ZMBJModeList)
{
ListTemp.Add(zmbj.SSFZ);
}
ListTemp = ListTemp.Distinct().ToList();
int a = ListTemp.Count;
//MessageBox.Show(a.ToString());
string[] group = new string[a];
int j = 0;
foreach (string str in ListTemp)
{
group[j] = str;
//MessageBox.Show(group[j]);
j++;
}
int b = ZMBJModeList.Count;
int k = 0;
foreach (cls_XTZMBJ zmbj in ZMBJModeList)
{
for (int l = 0; l < a; l++)
{
//MessageBox.Show(group[l]);
//MessageBox.Show(lvi.Group.Header.ToString());
if (zmbj.SSFZ.ToString() == group[l])
{
if (int.Parse(zmbj.ID.ToString()) < b - 1)
{
strxml += "new XElement(\"ZMBJ\", new XAttribute(\"nID\", \"" + int.Parse(zmbj.ID.ToString()) + "\"),new XAttribute(\"cTBMC\", \"" + zmbj.Name.ToString() + "\"),new XAttribute(\"nSSZH\", \"" + group[l] + "\"),new XAttribute(\"ZMTB\", \"" + zmbj.TBBH.ToString() + "\")),";
}
else if (int.Parse(zmbj.ID.ToString()) == b - 1)
{
strxml += "new XElement(\"ZMBJ\", new XAttribute(\"nID\", \"" + int.Parse(zmbj.ID.ToString()) + "\"),new XAttribute(\"cTBMC\", \"" + zmbj.Name.ToString() + "\"),new XAttribute(\"nSSZH\", \"" + group[l] + "\"),new XAttribute(\"ZMTB\", \"" + zmbj.TBBH.ToString() + "\")))";
}
else
{
MessageBox.Show("error");
}
}
}
k++;
}
//MessageBox.Show(strxml);
EvaluatorItem[] items = { new EvaluatorItem(typeof(XElement), strxml, "getXElement") };
Evaluator eval = new Evaluator(items);
XElement xcust = (XElement)eval.Evaluate("getXElement");
string xmlFileName = @"e:\test.xml";
xcust.Save(xmlFileName);
MessageBox.Show("保存成功!");
this.Close();