J’essaie de créer une simple vue de grid liée à un simple document xml, mais il me manque quelque chose car le message d’erreur persiste:
La source de données pour GridView avec l’ID ‘GridView1’ n’avait aucune propriété ou atsortingbut à partir duquel générer des colonnes. Assurez-vous que votre source de données a du contenu.
Code
XML
1096 About Us 21/12/2009 17:03:43 writer 1099 News 21/12/2009 17:03:47 writer 1098 Another page 21/12/2009 17:03:52 writer
Est-ce peut-être mon xpath qui est faux ou est-ce que je fais quelque chose de fondamentalement faux ici?
Il y a plusieurs façons de faire fonctionner ceci:
Voici un exemple de la façon de faire # 3:
DataSet ds = new DataSet(); ds.ReadXml(MapPath("~/App_Data/mydata.xml")); GridView1.DataSource = ds; GridView1.DataBind();
La limite de cette dernière approche est que vous n’obtenez pas de liaison de données automatique comme vous le feriez avec un contrôle de source de données. Cependant, étant donné que XmlDataSource est un contrôle en lecture seule, ce n’est pas nécessairement une limitation sérieuse.
XmlDataSource fonctionne avec des atsortingbuts, pas des entités enfants. Tu as besoin de faire:
Au lieu d’utiliser des éléments enfants. Malheureusement, c’est comme ça. Je souhaite vraiment que cela fonctionne avec l’alternative; J’aime beaucoup mieux cette approche.
essayez de changer le xpath pour
ressembler à XPath="data/node"
Document dynamic au document XML
Si votre fichier XML est structuré avec plus d’informations, vous pourrez itérer sur la structure plus facilement, car il est plus facile d’identifier le nœud exact que vous recherchez.
Nous avons un service Web qui renvoie XML dans une structure ligne / colonne (similaire à votre exemple de données ci-dessus)
Pour la rapidité, j’ai copié / collé notre solution, mais vous devriez comprendre l’essentiel et pouvoir le pirater pour faire votre travail.
Query Successful SomeData
SomeData
Voici l’implémentation c #
Il y a un peu de css et l’instance de contrôle pour votre facilité de copier / coller dans l’exemple ci-dessous.
//In Code In Front... Table.DataGridView{float:left; width:100%;} Table.DataGridView tr{} Table.DataGridView th{ background-color:Gray; font-weight:bold; color:White;} Table.DataGridView td{ background-color:White; color:Black; font-weight:normal;} //In Code Behind... XmlNode myXmlNodeObject = myXmlDocService.GetData(_xmlDataSsortingng); //Bind To GridView //Create a DataSet To Bind To DataSet ds = new DataSet(); ds.Tables.Add("XmlDataSet"); //Get Column Names as Ssortingng Array XmlDocument XMLDoc = new XmlDocument(); XMLDoc.LoadXml("" +myXmlNodeObject.ChildNodes.Item(0).ChildNodes.Item(2).ParentNode.InnerXml + " "); //Get Row/Columns int colCount = myXmlNodeObject.ChildNodes.Item(0).ChildNodes.Item(2).SelectNodes("column").Count; ssortingng[] ColumnNameArray = new ssortingng[colCount]; int iterator = 0; foreach(XmlNode node in myXmlNodeObject.ChildNodes.Item(0).ChildNodes.Item(2).SelectNodes("column")) { ColumnNameArray.SetValue(node.Atsortingbutes["name"].Value ,iterator); ds.Tables["XmlDataSet"].Columns.Add(node.Atsortingbutes["name"].Value); //Create individual columns in the dataset iterator++; } //Get Data Row By Row to populate the DataSet.Rows foreach(XmlNode RowNode in XMLDoc.ChildNodes.Item(0).SelectNodes("row")) { ssortingng[] rowArray = new ssortingng[colCount]; int iterator2 = 0; foreach(XmlNode ColumnNode in RowNode.ChildNodes) { rowArray.SetValue(ColumnNode.InnerText, iterator2); iterator2++; } ds.Tables["XmlDataSet"].Rows.Add(rowArray); } DataGridView.DataSource = ds.Tables["XmlDataSet"]; DataGridView.DataKeyNames = ColumnNameArray; DataGridView.DataBind(); DataGridView.Visible = true;