//加载xml数据
private void buttonX1_Click(object sender, EventArgs e)
{
//读取xml
//BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel1);
// BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel2);
BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\canyonlands.xml"), this.tabControlPanel3);
//BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel4);
// BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel5);
BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\water.xml"), this.tabControlPanel6);
// BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel7);
// BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\"), this.tabControlPanel8);
BuildDataGrid(GetObjectArrayList(@"E:\TDDOWNLOAD\设计模式\AbstractFactory\ObjectIdentity\xml\building.xml"), this.tabControlPanel9);
}
/// <summary>
/// 从xml中返回一个数组
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
protected List<string[]> GetObjectArrayList(string filePath)
{
XmlDataDocument doc = new XmlDataDocument();
doc.Load(filePath);
List<string[]> arrList = new List<string[]>();
if (doc != null)
{
XmlNodeList nodeList = XmlOpre.FindNodeListByName("Object", doc.SelectSingleNode("ObjectList"));
foreach (XmlNode node in nodeList)
{
string[] result = {
(node.SelectSingleNode("Symbol").InnerText+" "+ node.SelectSingleNode("No").InnerText),
node.SelectSingleNode("objectID").InnerText ,
node.SelectSingleNode("ObjectName").InnerText ,
node.SelectSingleNode("ObjectType").InnerText
};
arrList.Add(result);
//this.dataGridViewX1.Rows.Add(result, tabControlPanel3);
}
}
return arrList;
}
/// <summary>
/// 传入数组,动态生成datagridview
/// </summary>
/// <param name="arrList"></param>
/// <param name="tbPanel"></param>
protected void BuildDataGrid(List<string[]> arrList, DevComponents.DotNetBar.TabControlPanel tbPanel)
{
DevComponents.DotNetBar.Controls.DataGridViewX datagrid = new DevComponents.DotNetBar.Controls.DataGridViewX();
System.Windows.Forms.DataGridViewTextBoxColumn symbol = new DataGridViewTextBoxColumn(); ;
System.Windows.Forms.DataGridViewTextBoxColumn objectID = new DataGridViewTextBoxColumn(); ;
System.Windows.Forms.DataGridViewTextBoxColumn objectName = new DataGridViewTextBoxColumn(); ;
System.Windows.Forms.DataGridViewTextBoxColumn objectType = new DataGridViewTextBoxColumn();
symbol.DefaultCellStyle.Alignment = DataGridViewContentAlignment.BottomRight;
symbol.DataPropertyName = "Symbol";
symbol.HeaderText = "序号";
symbol.Width = 50;
symbol.ReadOnly = true;
objectID.DataPropertyName = "objectID";
objectID.HeaderText = "**";
objectID.Width = 50;
objectID.ReadOnly = true;
objectName.DataPropertyName = "ObjectName";
objectName.HeaderText = "名称";
objectName.Width = 80;
objectName.ReadOnly = true;
objectType.DataPropertyName = "ObjectName";
objectType.HeaderText = "类型";
objectType.Width = 80;
objectType.ReadOnly = true;
datagrid.AutoGenerateColumns = false;
datagrid.Dock = tbPanel.Dock;
datagrid.Columns.Add(symbol);
datagrid.Columns.Add(objectID);
datagrid.Columns.Add(objectName);
datagrid.Columns.Add(objectType);
datagrid.RowHeadersVisible = false;
datagrid.CellContentDoubleClick += new DataGridViewCellEventHandler(datagrid_CellContentDoubleClick);
foreach (string[] result in arrList)
{
datagrid.Rows.Add(result);
}
tbPanel.Controls.Add(datagrid);
}
/// <summary>
/// datagridview双击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void datagrid_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
DevComponents.DotNetBar.Controls.DataGridViewX datagrid = (DevComponents.DotNetBar.Controls.DataGridViewX)sender;
string Symbol = datagrid.Rows[e.RowIndex].Cells[0].Value.ToString();
string ObjectName = datagrid.Rows[e.RowIndex].Cells[1].Value.ToString();
string ObjectType = datagrid.Rows[e.RowIndex].Cells[2].Value.ToString();
MessageBox.Show(Symbol + " " + ObjectName + " " + ObjectType);
}