![]() |
Desktop Development »
Miscellaneous »
General
Intermediate
View XML Files Easily with XmlGridViewControlBy Chris Hambleton.NET control that displays XML files as XML or in a grid control |
C#2.0, Windows, .NET2.0, WinForms, VS2005, Dev
|
||||||||||
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||

The XmlGridViewControl is a .NET control for Windows Forms that displays an XML file in either a beautified XML format (via the Web Browser control) or in a datagrid view. When set to display in the datagrid, the index (zero-based) of the DataTable the XML file/dataset can be changed to quickly display a specific DataTable in the XML-DataSet.
To use the XmlGridViewControl in a Windows Form or another Windows .NET control, drop an instance of the XmlGridViewControl control on the form and then just set the following properties in your form/control class:
// display the XML file in a datagrid xmlGridView.ViewMode = XmlGridView.VIEW_MODE.TABLE; xmlGridView.DataSetTableIndex = 0; xmlGridView.DataFilePath = "c:\\temp\SampleFile.xml"; OR // display the XML file in XML mode xmlGridView.ViewMode = XmlGridView.VIEW_MODE.XML; xmlGridView.DataFilePath = "c:\\temp\SampleFile.xml";
Below is a demonstration of some of the different views in the XmlGridViewControl sample:
The XmlGridViewControl control is basically just an instance of a datagrid control and a web-browser control, and the ViewMode property determines which control is displayed (while the other is hidden). The DataFilePath property points to the XML file which is loaded and displayed, and the DataSetTableIndex determines which DataTable to display when in the TABLE mode and the DataSet contains multiple DataTables.
public partial class XmlGridView : UserControl { private bool m_bGridViewModeReadError = false; public enum VIEW_MODE {XML, TABLE} public VIEW_MODE ViewMode { get { return (webXmlView.Visible ? VIEW_MODE.XML : VIEW_MODE.TABLE); } set { SetViewMode(value); } } private string m_sDataFilePath = string.Empty; public string DataFilePath { get { return m_sDataFilePath; } set { m_sDataFilePath = value; LoadDataFile(); } } private int m_nDataSetTableIndex = 0; public int DataSetTableIndex { get { return m_nDataSetTableIndex; } set { SetDataSetTableIndex(value); } } private int m_nDataTableCount = 0; public int DataTableCount { get { return m_nDataTableCount; } } public XmlGridView() { InitializeComponent(); SetViewMode(VIEW_MODE.XML); } private void SetViewMode(VIEW_MODE mode) { if (m_bGridViewModeReadError == true) { mode = VIEW_MODE.XML; } if(mode == VIEW_MODE.XML) { webXmlView.Visible = true; grdTableView.Visible = false; } else { webXmlView.Visible = false; grdTableView.Visible = true; } } private void LoadDataFile() { m_bGridViewModeReadError = false; // use the webbrowser control to automatically parse the file webXmlView.Navigate(m_sDataFilePath); if ((m_sDataFilePath != string.Empty) && (File.Exists(m_sDataFilePath) == true)) { // Creates a DataSet and loads it with the xml content try { DataSet dsXmlFile = new DataSet(); dsXmlFile.ReadXml(m_sDataFilePath, XmlReadMode.Auto); m_nDataTableCount = dsXmlFile.Tables.Count; grdTableView.DataSource = dsXmlFile.Tables[DataSetTableIndex]; } catch { m_bGridViewModeReadError = true; m_nDataTableCount = 0; webXmlView.Navigate(m_sDataFilePath); SetViewMode(VIEW_MODE.XML); } } else { grdTableView.DataSource = null; } } private void SetDataSetTableIndex(int nTableIndex) { if (nTableIndex >= m_nDataTableCount) return; m_nDataSetTableIndex = nTableIndex; LoadDataFile(); } }
I hope you find this article and control useful - it's proved to be an invaluable resource when examining large or complicated XML files. Enjoy!
The control has been updated to include a DataTableCount property, which represents the number of datatables in the dataset/XML file. The sample application has also been updated to use a combobox to select the current datatable index from, instead of a textbox.
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+PgUp/PgDown to switch pages.
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 28 Nov 2006 Editor: |
Copyright 2006 by Chris Hambleton Everything else Copyright © CodeProject, 1999-2010 Web09 | Advertise on the Code Project |