---
title: "Sortera en xml fil i en datagrid"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/74871-sortera-en-xml-fil-i-en-datagrid"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "wwwstekaren"
published: "2003-04-24T08:51:47.000Z"
updated: "2003-04-29T07:53:22.000Z"
replies: 17
views: 354
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/74871-sortera-en-xml-fil-i-en-datagrid"
---

# Sortera en xml fil i en datagrid

## #1 — wwwstekaren, 2003-04-24T08:51Z

Nu är det dax igen:)

Har en xml fil där det ligger personer som listas i en datagrid det funkar jätte bra. Har åvanför varje cell ex: person, ålder , bor
Under dessa så listas xml filen upp ex

Person                  Ålder                  Bor
Nisse                    22                       Stockholm
Lars                      25                       Söder    
mm          

Nu vill jag ha hjälp med en funktion som listar i ex bokstavsordning när man trycker på person stigande när man trycker på ålder mm

Bifogar mina filer här neda
cs filen:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Globalization;
using System.IO;

namespace beerlist2
{
	/// \<summary\>
	/// Summary description for WebForm1.
	/// \</summary\>
	public class WebForm1 : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Label ErrorMessage;
		protected System.Web.UI.WebControls.LinkButton LinkButton1;
		protected System.Web.UI.WebControls.DataGrid WebData;
		protected System.Web.UI.WebControls.TextBox Responsible;
		protected System.Web.UI.WebControls.TextBox Rows;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			// Put user code to initialize the page here
			if (!(Page.IsPostBack))
			{
				WebData.DataSource = LoadWebs();
				WebData.DataBind();
			}
		}
		protected DataSet LoadWebs()
		{
			string sourceXml = Server.MapPath("webs.xml");
			if (!(File.Exists(sourceXml)))
			{
				return null;
			}
			DataSet cachedDataSet = (DataSet)Session\["Webs"\];
			if (!(cachedDataSet == null))
			{
				return cachedDataSet;
			}
			DataSet dataSet = new DataSet();
			try
			{ 
				dataSet.ReadXml(sourceXml);
				Session\["Webs"\] = dataSet;
			}
			catch (Exception e)
			{
				ErrorMessage.Text = e.Message;
				dataSet = null;
			}
			return dataSet;
		}

		protected void DEDR_Edit(object sender, DataGridCommandEventArgs e)
		{
			WebData.EditItemIndex = Convert.ToInt32(e.Item.ItemIndex);
			WebData.DataSource = LoadWebs();
			WebData.DataBind();
		}

		protected void DEDR_Update(object sender, DataGridCommandEventArgs e)
		{
			DataSet dataSet  = LoadWebs();
			string CheckName = ((TextBox)e.Item.FindControl("txtName")).Text;// hämtar värdet från textboxen i formuläret
			string CheckLastName = ((TextBox)e.Item.FindControl("txtLastName")).Text;
			string CheckEmail = ((TextBox)e.Item.FindControl("txtEmailAddress")).Text;
			string CheckCompany = ((TextBox)e.Item.FindControl("txtCompany")).Text;
			string CheckContact = ((DropDownList)e.Item.FindControl("txtContact")).SelectedItem.Text;
			string Check = CheckName + CheckLastName + CheckEmail + CheckCompany + CheckContact;
			TextBox EditText = null;
			DropDownList EditDropDown = null;
			bool found = false;	
			foreach(DataRow Row in dataSet.Tables\[0\].Rows)
			{
				//if(Check == CheckName + CheckLastName)
				//if(Row\["Name"\].ToString() == CheckName ) //Funkar
				if(Row\["Name"\].ToString() + Row\["LastName"\].ToString() + Row\["Email"\].ToString() + Row\["Company"\].ToString() + Row\["Contact"\].ToString() == Check)
				{
					found = true;
					Response.Write("Personen du försöker lägga till finns redan");
					break;
				}
			}
			if(!found)
			{
				int row = Convert.ToInt32(e.Item.ItemIndex);
		
				EditText = (TextBox)e.Item.FindControl("txtResponsible");
				dataSet.Tables\[0\].Rows\[row\]\["Responsible"\] = EditText.Text;

				EditText = (TextBox)e.Item.FindControl("txtName");
				dataSet.Tables\[0\].Rows\[row\]\["Name"\] = EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtLastName");
				dataSet.Tables\[0\].Rows\[row\]\["LastName"\] = EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtEmailAddress");
				dataSet.Tables\[0\].Rows\[row\]\["Email"\]= EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtCompany");
				dataSet.Tables\[0\].Rows\[row\]\["Company"\] = EditText.Text;
     
				EditDropDown = (DropDownList)e.Item.FindControl("txtContact");
				dataSet.Tables\[0\].Rows\[row\]\["Contact"\] = EditDropDown.SelectedItem.Text;
				//dataSet.Tables\[0\].Rows.
				dataSet.WriteXml(Server.MapPath("webs.xml"));
				Session\["Webs"\] = null;
				WebData.EditItemIndex = -1;
			}
			WebData.DataSource = LoadWebs();
			WebData.DataBind();
		}

		protected void DEDR_Cancel(object sender, DataGridCommandEventArgs e)
		{
			WebData.EditItemIndex = -1;
			Session\["Webs"\] = null;
			WebData.DataSource = LoadWebs();
			WebData.DataBind();
		}

		protected void DEDR_Delete(object sender, DataGridCommandEventArgs e)
		{
			DataSet dataSet = LoadWebs();
			int row = Convert.ToInt32(e.Item.ItemIndex);
			dataSet.Tables\[0\].Rows\[row\].Delete();
			dataSet.WriteXml(Server.MapPath("webs.xml"));
			Session\["Webs"\] = null;
			WebData.EditItemIndex = -1;
			WebData.DataSource = LoadWebs();
			WebData.DataBind();
		}

		protected void DEDR_Add(object sender, EventArgs e)
		{
			DataSet dataSet = LoadWebs();
			DataRow newRow;
			newRow = dataSet.Tables\[0\].NewRow(); 
			newRow\["Responsible"\] = "";
			newRow\["Name"\] = "";
			newRow\["LastName"\] = "";
			newRow\["Email"\] = "";
			newRow\["Company"\] = "";
			newRow\["Contact"\] = "";
			dataSet.Tables\[0\].Rows.InsertAt(newRow,0);  //ändra för var informuläret ska hamna, nu hamnar det högst upp i tabellen
			dataSet.WriteXml(Server.MapPath("webs.xml"));
			Session\["Webs"\] = null;
			WebData.DataSource = LoadWebs();
			WebData.DataBind();
			Session\["Webs"\] = null;
			WebData.EditItemIndex = 0;//WebData.Items.Count - 1;
			WebData.DataSource = LoadWebs();
			WebData.DataBind();
		}

		\#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// \<summary\>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// \</summary\>
		private void InitializeComponent()
		{    
			this.Load += new System.EventHandler(this.Page_Load);

		}
		\#endregion
	}
}

xml fil:

\<?xml version="1.0" standalone="yes"?\> 
\<Webs\> 
\<Web\> 
\<Responsible /\> 
\<Name\>Kurt\</Name\> 
\<LastName\>Nilsson\</LastName\> 
\<Email\>kurt.nilsson@ibm.se\</Email\> 
\<Company\>IBM\</Company\> 
\<Contact\>Kund\</Contact\> 
\</Web\> 
\<Web\> 
\<Responsible /\> 
\<Name\>Kurt\</Name\> 
\<LastName\>Johansson\</LastName\> 
\<Email\>kurt@ibm.se\</Email\> 
\<Company\>IBM\</Company\> 
\<Contact\>Kund\</Contact\> 
\</Web\> 
\</webs\>

Permalänk: https://www.webforum.nu/p/74871

## #2 — NETwork, 2003-04-24T09:05Z

Det finns inbyggt stöd för att sortera data i en datagrid. Mer läsning:
<http://samples.gotdotnet.com/quickstart/aspplus/doc/webdataaccess.aspx#sort>

Permalänk: https://www.webforum.nu/p/1023621

## #3 — wwwstekaren, 2003-04-24T09:07Z

tackar ska kolla det nu

Permalänk: https://www.webforum.nu/p/1023625

## #4 — wwwstekaren, 2003-04-24T13:11Z

Sortera en xml fil i en datagrid  del 2

Hej har nu fått det mesta att funka ska nu lägga in två saker som jag håller på med i samma projekt.

aspx.cs filen

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Globalization;
using System.IO;

namespace sortxmldata
{
	/// \<summary\>
	/// Summary description for WebForm1.
	/// \</summary\>
	public class WebForm1 : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.DataGrid XmlDataGrid;
		protected System.Web.UI.WebControls.Label ErrorMessage;
		protected System.Web.UI.WebControls.LinkButton LinkButton1;
		protected System.Web.UI.WebControls.TextBox Responsible;
		protected System.Web.UI.WebControls.TextBox Rows;
		
		string SortField 
		{

			get 
			{
				object o = ViewState\["SortField"\];
				if (o == null) 
				{
					return String.Empty;
				}
				return (string)o;
			}

			set 
			{
				if (value == SortField) 
				{
					//if ascending change to descending or vice versa.
					SortAscending = !SortAscending;
				}
				ViewState\["SortField"\] = value;
			}
		}

		// using ViewState for SortAscending property
		bool SortAscending 
		{

			get 
			{
				object o = ViewState\["SortAscending"\];
				if (o == null) 
				{
					return true;
				}
				return (bool)o;
			}

			set 
			{
				ViewState\["SortAscending"\] = value;
			}
		}
    
		protected void Page_Load(Object src, EventArgs e)
		{
			if(!IsPostBack)
			{
				XmlDataGrid.DataSource = LoadWebs();
				XmlDataGrid.DataBind();
				BindGrid();
			}
		}
	
		protected void BindGrid(object sender, DataGridCommandEventArgs e)
		{
			//TextBox EditText = null;
			string dataUrl = "webs.xml";
			//string schemaUrl = "books.xsd";
		
			DataSet ds = new DataSet();
			//ds.ReadXmlSchema(Server.MapPath(schemaUrl));
			ds.ReadXml(Server.MapPath(dataUrl));
		
			DataView dv = new DataView(ds.Tables\[0\]);
			DataTable dt = dv.Table;
		
			//Custom names for the columns
			dt.Columns\[0\].ColumnName = "Ansvarig";
			dt.Columns\[1\].ColumnName = "F&#246;rnamn";
			dt.Columns\[2\].ColumnName = "Efternamn";
			dt.Columns\[3\].ColumnName = "E-post";
			dt.Columns\[4\].ColumnName = "F&#246;retag";
			dt.Columns\[5\].ColumnName = "Typ av O2-kontakt";

			int row = Convert.ToInt32(e.Item.ItemIndex);
			dt.DataSet.Tables\[0\].Rows\[row\]\["Responsible"\] = EditText.Text;
		
			//Sorting criteria
			dv.Sort = SortField;
			if (!SortAscending)
			{
				dv.Sort += " DESC";	//append "DESC" to the sort field name in order to sort descending
			}
        
			XmlDataGrid.DataSource = dv;
			XmlDataGrid.DataBind();
		
		}
		protected void SortGrid(Object src, DataGridSortCommandEventArgs e)
		{
			XmlDataGrid.CurrentPageIndex = 0;
			SortField = e.SortExpression;	//get the requested sorting field name and set it to SortField
			BindGrid();
		}

		protected DataSet LoadWebs()
		{
			string sourceXml = Server.MapPath("webs.xml");
			if (!(File.Exists(sourceXml)))
			{
				return null;
			}
			DataSet cachedDataSet = (DataSet)Session\["Webs"\];
			if (!(cachedDataSet == null))
			{
				return cachedDataSet;
			}
			DataSet dataSet = new DataSet();
			try
			{ 
				dataSet.ReadXml(sourceXml);
				Session\["Webs"\] = dataSet;
			}
			catch (Exception e)
			{
				ErrorMessage.Text = e.Message;
				dataSet = null;
			}
			return dataSet;
		}

		protected void DEDR_Edit(object sender, DataGridCommandEventArgs e)
		{
			XmlDataGrid.EditItemIndex = Convert.ToInt32(e.Item.ItemIndex);
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		protected void DEDR_Update(object sender, DataGridCommandEventArgs e)
		{
			DataSet dataSet  = LoadWebs();
			string CheckName = ((TextBox)e.Item.FindControl("txtName")).Text;// hämtar värdet från textboxen i formuläret
			string CheckLastName = ((TextBox)e.Item.FindControl("txtLastName")).Text;
			string CheckEmail = ((TextBox)e.Item.FindControl("txtEmailAddress")).Text;
			string CheckCompany = ((TextBox)e.Item.FindControl("txtCompany")).Text;
			string CheckContact = ((DropDownList)e.Item.FindControl("txtContact")).SelectedItem.Text;
			string Check = CheckName + CheckLastName + CheckEmail + CheckCompany + CheckContact;
			TextBox EditText = null;
			DropDownList EditDropDown = null;
			bool found = false;	
			foreach(DataRow Row in dataSet.Tables\[0\].Rows)
			{
				//if(Check == CheckName + CheckLastName)
				//if(Row\["Name"\].ToString() == CheckName ) //Funkar
				if(Row\["Name"\].ToString() + Row\["LastName"\].ToString() + Row\["Email"\].ToString() + Row\["Company"\].ToString() + Row\["Contact"\].ToString() == Check)
				{
					found = true;
					Response.Write("Personen du försöker lägga till finns redan");
					break;
				}
			}
			if(!found)
			{
				int row = Convert.ToInt32(e.Item.ItemIndex);
		
				EditText = (TextBox)e.Item.FindControl("txtResponsible");
				dataSet.Tables\[0\].Rows\[row\]\["Responsible"\] = EditText.Text;

				EditText = (TextBox)e.Item.FindControl("txtName");
				dataSet.Tables\[0\].Rows\[row\]\["Name"\] = EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtLastName");
				dataSet.Tables\[0\].Rows\[row\]\["LastName"\] = EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtEmailAddress");
				dataSet.Tables\[0\].Rows\[row\]\["Email"\]= EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtCompany");
				dataSet.Tables\[0\].Rows\[row\]\["Company"\] = EditText.Text;
     
				EditDropDown = (DropDownList)e.Item.FindControl("txtContact");
				dataSet.Tables\[0\].Rows\[row\]\["Contact"\] = EditDropDown.SelectedItem.Text;
				//dataSet.Tables\[0\].Rows.
				dataSet.WriteXml(Server.MapPath("webs.xml"));
				Session\["Webs"\] = null;
				XmlDataGrid.EditItemIndex = -1;
			}
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		protected void DEDR_Cancel(object sender, DataGridCommandEventArgs e)
		{
			XmlDataGrid.EditItemIndex = -1;
			Session\["Webs"\] = null;
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		protected void DEDR_Delete(object sender, DataGridCommandEventArgs e)
		{
			DataSet dataSet = LoadWebs();
			int row = Convert.ToInt32(e.Item.ItemIndex);
			dataSet.Tables\[0\].Rows\[row\].Delete();
			dataSet.WriteXml(Server.MapPath("webs.xml"));
			Session\["Webs"\] = null;
			XmlDataGrid.EditItemIndex = -1;
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		protected void DEDR_Add(object sender, EventArgs e)
		{
			DataSet dataSet = LoadWebs();
			DataRow newRow;
			newRow = dataSet.Tables\[0\].NewRow(); 
			newRow\["Responsible"\] = "";
			newRow\["Name"\] = "";
			newRow\["LastName"\] = "";
			newRow\["Email"\] = "";
			newRow\["Company"\] = "";
			newRow\["Contact"\] = "";
			dataSet.Tables\[0\].Rows.InsertAt(newRow,0);  //ändra för var informuläret ska hamna, nu hamnar det högst upp i tabellen
			dataSet.WriteXml(Server.MapPath("webs.xml"));
			Session\["Webs"\] = null;
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
			Session\["Webs"\] = null;
			XmlDataGrid.EditItemIndex = 0;//WebData.Items.Count - 1;
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}
		\#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// \<summary\>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// \</summary\>
		private void InitializeComponent()
		{    
			this.Load += new System.EventHandler(this.Page_Load);
		}
		\#endregion
	}
}

Permalänk: https://www.webforum.nu/p/1023727

## #5 — wwwstekaren, 2003-04-24T13:12Z

aspx filen

\<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="sortxmldata.WebForm1" %\>
\<html\>
	\<head\>
		\<title\>Sorting different datatypes in XML using DataGrid\</title\>
		\<meta content="Microsoft Visual Studio 7.0" name="GENERATOR"\>
		\<meta content="C#" name="CODE_LANGUAGE"\>
		\<meta content="JavaScript" name="vs_defaultClientScript"\>
		\<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"\>
		\<style\>
		BODY { FONT-SIZE: 10px; FONT-FAMILY: verdana }
		TD { FONT-SIZE: 10px; FONT-FAMILY: verdana }
		DIV { FONT-SIZE: 10px; FONT-FAMILY: verdana }
		SELECT { FONT-SIZE: 10px; FONT-FAMILY: verdana }
		INPUT { FONT-SIZE: 10px; FONT-FAMILY: verdana }
		.headlineS { FONT-WEIGHT: bold; FONT-SIZE: 18px; PADDING-BOTTOM: 8px; COLOR: #888888 }
		.name { }
		.button { }
		\</style\>
	\</head\>
	\<body bgColor="#ffffff"\>
		\<form runat="server" ID="Form1"\>
			\<div class="headlineS"\>\<em\>Fredagsölslistan &nbsp;ett.noll\</em\>\</div\>
			\<p\>
				
				\<asp:datagrid CssClass="asptable" id="XmlDataGrid" CellSpacing="1" runat="server" OnSortCommand="SortGrid" AllowSorting="True" AutoGenerateColumns="False"\>
					\<AlternatingItemStyle BackColor="Gainsboro"\>\</AlternatingItemStyle\>
				\<ItemStyle BackColor="White"\>\</ItemStyle\>
				\<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="DodgerBlue"\>\</HeaderStyle\>
				\<Columns\>
					\<asp:TemplateColumn HeaderText="Ansvarig"\>
						\<ItemTemplate\>
							\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "Responsible") %\>\</div\>
						\</ItemTemplate\>
						\<EditItemTemplate\>
							\<asp:TextBox id="txtResponsible" Text='\<%# DataBinder.Eval(Container.DataItem, "Responsible") %\>' size="25" runat="server"/\>
						\</EditItemTemplate\>
					\</asp:TemplateColumn\>
					\<asp:TemplateColumn HeaderText="F&#246;rnamn"\>
						\<ItemTemplate\>
							\<div class="name"\>\<a target="\_blank" href='http://\<%# DataBinder.Eval(Container.DataItem, "Name") %\>'\>\<%# DataBinder.Eval(Container.DataItem, "Name") %\>\</a\>\</div\>
						\</ItemTemplate\>
						\<EditItemTemplate\>
							\<asp:TextBox id="txtName" Text='\<%# DataBinder.Eval(Container.DataItem,"Name") %\>' size="25" runat="server"/\>
						\</EditItemTemplate\>
					\</asp:TemplateColumn\>
					\<asp:TemplateColumn HeaderText="Efternamn"\>
						\<ItemTemplate\>
							\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "LastName") %\>\</div\>
						\</ItemTemplate\>
						\<EditItemTemplate\>
							\<asp:TextBox id="txtLastName" Text='\<%# DataBinder.Eval(Container.DataItem,"LastName") %\>' size="25" runat="server"/\>
						\</EditItemTemplate\>
					\</asp:TemplateColumn\>
					\<asp:TemplateColumn HeaderText="E-post"\>
						\<ItemTemplate\>
							\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "Email") %\>\</div\>
						\</ItemTemplate\>
						\<EditItemTemplate\>
							\<asp:TextBox id="txtEmailAddress" Text='\<%# DataBinder.Eval(Container.DataItem, "Email") %\>' size="25" runat="server"/\>
						\</EditItemTemplate\>
					\</asp:TemplateColumn\>
					\<asp:TemplateColumn HeaderText="F&#246;retag"\>
						\<ItemTemplate\>
							\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "Company") %\>\</div\>
						\</ItemTemplate\>
						\<EditItemTemplate\>
							\<asp:TextBox id="txtCompany" Text='\<%# DataBinder.Eval(Container.DataItem, "Company") %\>' size="25" runat="server"/\>
						\</EditItemTemplate\>
					\</asp:TemplateColumn\>
					\<asp:TemplateColumn HeaderText="Typ av O2-kontakt"\>
						\<ItemTemplate\>
							\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "Contact") %\>\</div\>
						\</ItemTemplate\>
						\<EditItemTemplate\>
							\<asp:Dropdownlist id="txtContact" Text='\<%# DataBinder.Eval(Container.DataItem, "Contact") %\>' width="100%" runat="server"\>
								\<asp:ListItem Value="contact1"\>Nätverk\</asp:ListItem\>
								\<asp:ListItem Value="contact2"\>Kund\</asp:ListItem\>
								\<asp:ListItem Value="contact3"\>Leverantör\</asp:ListItem\>
								\<asp:ListItem Value="contact4"\>Partner\</asp:ListItem\>
								\<asp:ListItem Value="contact5"\>Prospekt\</asp:ListItem\>
								\<asp:ListItem Value="contact6"\>Fd O2are\</asp:ListItem\>
							\</asp:Dropdownlist\>
						\</EditItemTemplate\>
					\</asp:TemplateColumn\>
					\<asp:TemplateColumn\>
						\<ItemTemplate\>
							\<div class="button"\>
								\<asp:LinkButton CommandName="Edit" Text="Edit" runat="server" ID="Linkbutton2" /\>\</div\>
							\<div class="button"\>
								\<asp:LinkButton CommandName="Delete" Text="Delete" runat="server" ID="Linkbutton3" /\>\</div\>
						\</ItemTemplate\>
						\<EditItemTemplate\>
							\<div class="button"\>
								\<asp:LinkButton CommandName="Cancel" Text="Cancel" runat="server" ID="Linkbutton4" /\>\</div\>
							\<div class="button"\>
								\<asp:LinkButton CommandName="Update" Text="Update" runat="server" ID="Linkbutton5" /\>\</div\>
						\</EditItemTemplate\>
					\</asp:TemplateColumn\>
				\</Columns\>
			\</asp:datagrid\>\</form\>
		\<table cellSpacing="0" cellPadding="0"\>
			\<tr vAlign="top"\>
				\<td\>\<em\>Monger\</em\> (eng.):&nbsp;
				\</td\>
				\<td\>\<strong\>förmedlare\|spridare\</strong\> av obskyra och/eller tveksamma företeelser 
					såsom t.ex. rykten, narkotika eller webbplatser.\<br\>
					(Ex. \<em\>Warmonger\</em\> (eng.): Krigsspridare)
				\</td\>
			\</tr\>
		\</table\>
		\<br\>
		&nbsp;\<br\>
	\</body\>
\</HTML\>

får fel i aspx.cs filen

No overload for method 'BindGrid' takes '0' arguments

Permalänk: https://www.webforum.nu/p/1023728

## #6 — NETwork, 2003-04-24T13:22Z

Funktionen BindGrid tar två inparametrar:

```
protected void BindGrid(object sender, DataGridCommandEventArgs e)
```

Så då kan du inte köra den funktionen med bara BindGrid(); 
 utan att skicka in inparametrar också...

Permalänk: https://www.webforum.nu/p/1023746

## #7 — wwwstekaren, 2003-04-24T15:06Z

hur ska jag skriva här då?

protected void Page_Load(Object src, EventArgs e)
		{
			if(!IsPostBack)
			{
				XmlDataGrid.DataSource = LoadWebs();
				XmlDataGrid.DataBind();
				BindGrid();
			}
		}

Permalänk: https://www.webforum.nu/p/1023869

## #8 — NETwork, 2003-04-24T15:30Z

Lite snabbt utan att kolla koden så noga (har lite briottom måste med bussen) så kan du ju bara slänga in nåt som den vill ha:

```
BindGrid(this, new DataGridCommandEventArgs());
```

Funkar om du inte använder inparametrarna till nåt särskilt i just den funktionen...

Permalänk: https://www.webforum.nu/p/1023883

## #9 — wwwstekaren, 2003-04-25T08:45Z

Sortera en xml fil i en datagrid del 3

BindGrid(this, new DataGridCommandEventArgs());

får detta fel

får fel på new

felmedelande

No overload for method DataGridCommandEventArgs takes '0' argument

Permalänk: https://www.webforum.nu/p/1024316

## #10 — renholm, 2003-04-25T22:24Z

vad försöker du göra? finns bra exempel på hur man använder en datagrid på <http://samples.gotdotnet.com/quickstart/.>

Permalänk: https://www.webforum.nu/p/1025079

## #11 — NETwork, 2003-04-26T07:58Z

Alltså, grundproblemet är att du försöker starta en funktion som kräver två inparametrar (sendern och eventet). Då kan funktionen inte köras om du inte skickar in dessa. I vissa fall så kan du själv konstruera tomma instanser av de objekt som den tar in eftersom dessa ändå inte fyller någon roll i funktionen som sådan, du skickar alltså in de inparametrar funktionen vill ha så körs koden i din funktion.

I det här fallet kräver visst DataGridCommandEventArgs() i sin tur också ett par inparametrar, du kan således inte skapa en instans av eventet utan dessa. Men istälelt för att slänga in dessa också är det kanske läge att fundera på om den koden du vill köra i BindGrid inte kan anropas på något annat sätt, i en funktion som itne tar några inparametrar överhuvudtaget annars är du ute på minerad mark snabbt... 

En liten parentes bara, eftersom detta är en följdfråga i en annan tråd så är ett tips att du fortsätter skriva där så är det lättare för alla att förstå ursprungsfrågan och därmed blir det lättare för nytillkomna läsare att hjälpa dig med en lösning! :)

Permalänk: https://www.webforum.nu/p/1025228

## #12 — wwwstekaren, 2003-04-28T12:52Z

Sortera en xml fil i en datagrid del 4

Hej nu har jag problem igen:(

När jag klickar på en länk som den ska sortera efter så funkar det inte

får detta felet

Cannot find column XmlDataGrid_SortCommand. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IndexOutOfRangeException: Cannot find column XmlDataGrid_SortCommand.

Source Error: 

Line 110:		
Line 111:			//Sorting criteria
Line 112:			dv.Sort = SortField; Felet
Line 113:			if (!SortAscending)
Line 114:			{
 

ASPX FILEN

\<%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="beerlist5.WebForm1" %\>
\<HTML\>
	\<HEAD\>
		\<title\>Sorting different datatypes in XML using DataGrid\</title\>
		\<meta content="Microsoft Visual Studio 7.0" name="GENERATOR"\>
		\<meta content="C#" name="CODE_LANGUAGE"\>
		\<meta content="JavaScript" name="vs_defaultClientScript"\>
		\<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"\>
		\<style\>BODY {
	FONT-SIZE: 10px; FONT-FAMILY: verdana
}
TD {
	FONT-SIZE: 10px; FONT-FAMILY: verdana
}
DIV {
	FONT-SIZE: 10px; FONT-FAMILY: verdana
}
SELECT {
	FONT-SIZE: 10px; FONT-FAMILY: verdana
}
INPUT {
	FONT-SIZE: 10px; FONT-FAMILY: verdana
}
.headlineS {
	FONT-WEIGHT: bold; FONT-SIZE: 18px; PADDING-BOTTOM: 8px; COLOR: #888888
}
.name {
	
}
.button {
	
}
		\</style\>
	\</HEAD\>
	\<body bgColor="#ffffff"\>
		\<form id="Form1" runat="server"\>
			\<div class="headlineS"\>\<em\>Fredagsölslistan &nbsp;ett.noll\</em\>\</div\>
			\<p\>\<asp:datagrid id="XmlDataGrid" runat="server" AutoGenerateColumns="False" AllowSorting="True" OnDeleteCommand="DEDR_Delete" OnUpdateCommand="DEDR_Update" OnCancelCommand="DEDR_Cancel" OnEditCommand="DEDR_Edit" OnSortCommand="SortGrid" CellSpacing="1" CssClass="asptable" BorderWidth="0" BorderStyle="None"\>
					\<AlternatingItemStyle BackColor="Gainsboro"\>\</AlternatingItemStyle\>
					\<ItemStyle BackColor="White"\>\</ItemStyle\>
					\<HeaderStyle Font-Bold="True" ForeColor="White" BackColor="DodgerBlue"\>\</HeaderStyle\>
					\<Columns\>
						\<asp:TemplateColumn HeaderText="Ansvarig"\>
							\<ItemTemplate\>
								\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "Responsible") %\>\</div\>
							\</ItemTemplate\>
							\<EditItemTemplate\>
								\<asp:TextBox id="txtResponsible" Text='\<%# DataBinder.Eval(Container.DataItem, "Responsible") %\>' size="25" runat="server"/\>
							\</EditItemTemplate\>
						\</asp:TemplateColumn\>
						\<asp:TemplateColumn SortExpression="XmlDataGrid_SortCommand" HeaderText="F&#246;rnamn"\>
							\<ItemTemplate\>
								\<div class="name"\>\<a target="\_blank" href='http://\<%# DataBinder.Eval(Container.DataItem, "Name") %\>'\>\<%# DataBinder.Eval(Container.DataItem, "Name") %\>\</a\>\</div\>
							\</ItemTemplate\>
							\<EditItemTemplate\>
								\<asp:TextBox id="txtName" Text='\<%# DataBinder.Eval(Container.DataItem,"Name") %\>' size="25" runat="server"/\>
							\</EditItemTemplate\>
						\</asp:TemplateColumn\>
						\<asp:TemplateColumn HeaderText="Efternamn"\>
							\<ItemTemplate\>
								\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "LastName") %\>\</div\>
							\</ItemTemplate\>
							\<EditItemTemplate\>
								\<asp:TextBox id="txtLastName" Text='\<%# DataBinder.Eval(Container.DataItem,"LastName") %\>' size="25" runat="server"/\>
							\</EditItemTemplate\>
						\</asp:TemplateColumn\>
						\<asp:TemplateColumn HeaderText="E-post"\>
							\<ItemTemplate\>
								\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "Email") %\>\</div\>
							\</ItemTemplate\>
							\<EditItemTemplate\>
								\<asp:TextBox id="txtEmailAddress" Text='\<%# DataBinder.Eval(Container.DataItem, "Email") %\>' size="25" runat="server"/\>
							\</EditItemTemplate\>
						\</asp:TemplateColumn\>
						\<asp:TemplateColumn HeaderText="F&#246;retag"\>
							\<ItemTemplate\>
								\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "Company") %\>\</div\>
							\</ItemTemplate\>
							\<EditItemTemplate\>
								\<asp:TextBox id="txtCompany" Text='\<%# DataBinder.Eval(Container.DataItem, "Company") %\>' size="25" runat="server"/\>
							\</EditItemTemplate\>
						\</asp:TemplateColumn\>
						\<asp:TemplateColumn HeaderText="Typ av O2-kontakt"\>
							\<ItemTemplate\>
								\<div class="name"\>\<%# DataBinder.Eval(Container.DataItem, "Contact") %\>\</div\>
							\</ItemTemplate\>
							\<EditItemTemplate\>
								\<asp:Dropdownlist id="txtContact" Text='\<%# DataBinder.Eval(Container.DataItem, "Contact") %\>' width="100%" runat="server"\>
									\<asp:ListItem Value="contact1"\>Nätverk\</asp:ListItem\>
									\<asp:ListItem Value="contact2"\>Kund\</asp:ListItem\>
									\<asp:ListItem Value="contact3"\>Leverantör\</asp:ListItem\>
									\<asp:ListItem Value="contact4"\>Partner\</asp:ListItem\>
									\<asp:ListItem Value="contact5"\>Prospekt\</asp:ListItem\>
									\<asp:ListItem Value="contact6"\>Fd O2are\</asp:ListItem\>
								\</asp:Dropdownlist\>
							\</EditItemTemplate\>
						\</asp:TemplateColumn\>
						\<asp:TemplateColumn\>
							\<ItemTemplate\>
								\<div class="button"\>
									\<asp:LinkButton CommandName="Edit" Text="Edit" runat="server" ID="Linkbutton2" /\>\</div\>
								\<div class="button"\>
									\<asp:LinkButton CommandName="Delete" Text="Delete" runat="server" ID="Linkbutton3" /\>\</div\>
							\</ItemTemplate\>
							\<EditItemTemplate\>
								\<div class="button"\>
									\<asp:LinkButton CommandName="Cancel" Text="Cancel" runat="server" ID="Linkbutton4" /\>\</div\>
								\<div class="button"\>
									\<asp:LinkButton CommandName="Update" Text="Update" runat="server" ID="Linkbutton5" /\>\</div\>
							\</EditItemTemplate\>
						\</asp:TemplateColumn\>
					\</Columns\>
				\</asp:datagrid\>
		\</form\>
		\<table cellSpacing="0" cellPadding="0"\>
			\<tr vAlign="top"\>
				\<td\>\<em\>Monger\</em\> (eng.):&nbsp;
				\</td\>
				\<td\>\<strong\>förmedlare\|spridare\</strong\> av obskyra och/eller tveksamma företeelser 
					såsom t.ex. rykten, narkotika eller webbplatser.\<br\>
					(Ex. \<em\>Warmonger\</em\> (eng.): Krigsspridare)
				\</td\>
			\</tr\>
		\</table\>
		\<br\>
		&nbsp;\<br\>
		\</P\>
	\</body\>
\</HTML\>

Permalänk: https://www.webforum.nu/p/1026790

## #13 — wwwstekaren, 2003-04-28T12:53Z

ASPX.CS filen

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.Globalization;
using System.IO;

namespace beerlist5
{
	/// \<summary\>
	/// Summary description for WebForm1.
	/// \</summary\>
	public class WebForm1 : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.DataGrid XmlDataGrid;
		protected System.Web.UI.WebControls.Label ErrorMessage;
		protected System.Web.UI.WebControls.LinkButton LinkButton1;
		protected System.Web.UI.WebControls.TextBox Responsible;
		protected System.Web.UI.WebControls.TextBox Rows;

		string SortField 
		{

			get 
			{
				object o = ViewState\["SortField"\];
				if (o == null) 
				{
					return String.Empty;
				}
				return (string)o;
			}

			set 
			{
				if (value == SortField) 
				{
					//if ascending change to descending or vice versa.
					SortAscending = !SortAscending;
				}
				ViewState\["SortField"\] = value;
			}
		}

		// using ViewState for SortAscending property
		bool SortAscending 
		{

			get 
			{
				object o = ViewState\["SortAscending"\];
				if (o == null) 
				{
					return true;
				}
				return (bool)o;
			}

			set 
			{
				ViewState\["SortAscending"\] = value;
			}
		}
    
		protected void Page_Load(Object src, EventArgs e)
		{
			if(!IsPostBack)
			{
				//XmlDataGrid.DataSource = LoadWebs();
				//XmlDataGrid.DataBind();
				BindGrid();
			}
		}
	
		protected void BindGrid()
		{
			
			//TextBox EditText = null;
			//string dataUrl = "webs.xml";
			//string schemaUrl = "books.xsd";
		
			DataSet ds = LoadWebs();
			//ds.ReadXmlSchema(Server.MapPath(schemaUrl));
			//ds.ReadXml(Server.MapPath(dataUrl));
		
			DataView dv = new DataView(ds.Tables\[0\]);
			DataTable dt = dv.Table;
		
			//Custom names for the columns
			//int row = Convert.ToInt32(e.Item.ItemIndex);
			
			//ds.Tables\[0\].Rows\[row\]\["Responsible"\] = EditText.Text;

			dt.Columns\[0\].ColumnName = "Responsible";
			dt.Columns\[1\].ColumnName = "Name";
			dt.Columns\[2\].ColumnName = "LastName";
			dt.Columns\[3\].ColumnName = "Email";
			dt.Columns\[4\].ColumnName = "Company";
			dt.Columns\[5\].ColumnName = "Contact";
		
			//Sorting criteria
			dv.Sort = SortField;
			if (!SortAscending)
			{
				dv.Sort += " DESC";	//append "DESC" to the sort field name in order to sort descending
			}
        
			XmlDataGrid.DataSource = dv;
			XmlDataGrid.DataBind();

		}
		protected void SortGrid(Object src, DataGridSortCommandEventArgs e)
		{
			XmlDataGrid.CurrentPageIndex = 0;
			// get the requested sorting field name and set it to SortField SortField = e.SortExpression; BindGrid(); 

		}
		protected void DEDR_Edit(object sender, DataGridCommandEventArgs e)
		{
			XmlDataGrid.EditItemIndex = Convert.ToInt32(e.Item.ItemIndex);
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		protected void DEDR_Update(object sender, DataGridCommandEventArgs e)
		{
			DataSet dataSet = LoadWebs();
			//DataSet dataSet  = LoadWebs();
			string CheckName = ((TextBox)e.Item.FindControl("txtName")).Text;// hämtar värdet från textboxen i formuläret
			string CheckLastName = ((TextBox)e.Item.FindControl("txtLastName")).Text;
			string CheckEmail = ((TextBox)e.Item.FindControl("txtEmailAddress")).Text;
			string CheckCompany = ((TextBox)e.Item.FindControl("txtCompany")).Text;
			string CheckContact = ((DropDownList)e.Item.FindControl("txtContact")).SelectedItem.Text;
			string Check = CheckName + CheckLastName + CheckEmail + CheckCompany + CheckContact;
			TextBox EditText = null;
			DropDownList EditDropDown = null;
			bool found = false;	
			foreach(DataRow Row in dataSet.Tables\[0\].Rows)
			{
				//if(Check == CheckName + CheckLastName)
				//if(Row\["Name"\].ToString() == CheckName ) //Funkar
				if(Row\["Name"\].ToString() + Row\["LastName"\].ToString() + Row\["Email"\].ToString() + Row\["Company"\].ToString() + Row\["Contact"\].ToString() == Check)
				{
					found = true;
					Response.Write("Personen du försöker lägga till finns redan");
					break;
				}
			}
			if(!found)
			{
				int row = Convert.ToInt32(e.Item.ItemIndex);
		
				EditText = (TextBox)e.Item.FindControl("txtResponsible");
				dataSet.Tables\[0\].Rows\[row\]\["Responsible"\] = EditText.Text;

				EditText = (TextBox)e.Item.FindControl("txtName");
				dataSet.Tables\[0\].Rows\[row\]\["Name"\] = EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtLastName");
				dataSet.Tables\[0\].Rows\[row\]\["LastName"\] = EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtEmailAddress");
				dataSet.Tables\[0\].Rows\[row\]\["Email"\]= EditText.Text;
	 
				EditText = (TextBox)e.Item.FindControl("txtCompany");
				dataSet.Tables\[0\].Rows\[row\]\["Company"\] = EditText.Text;
     
				EditDropDown = (DropDownList)e.Item.FindControl("txtContact");
				dataSet.Tables\[0\].Rows\[row\]\["Contact"\] = EditDropDown.SelectedItem.Text;
				//dataSet.Tables\[0\].Rows.
				dataSet.WriteXml(Server.MapPath("webs.xml"));
				Session\["Webs"\] = null;
				XmlDataGrid.EditItemIndex = -1;
			}
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		protected void DEDR_Cancel(object sender, DataGridCommandEventArgs e)
		{
			XmlDataGrid.EditItemIndex = -1;
			Session\["Webs"\] = null;
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		protected void DEDR_Delete(object sender, DataGridCommandEventArgs e)
		{
			DataSet dataSet = LoadWebs();
			int row = Convert.ToInt32(e.Item.ItemIndex);
			dataSet.Tables\[0\].Rows\[row\].Delete();
			dataSet.WriteXml(Server.MapPath("webs.xml"));
			Session\["Webs"\] = null;
			XmlDataGrid.EditItemIndex = -1;
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		protected void DEDR_Add(object sender, EventArgs e)
		{
			DataSet dataSet = LoadWebs();
			DataRow newRow;
			newRow = dataSet.Tables\[0\].NewRow(); 
			newRow\["Responsible"\] = "";
			newRow\["Name"\] = "";
			newRow\["LastName"\] = "";
			newRow\["Email"\] = "";
			newRow\["Company"\] = "";
			newRow\["Contact"\] = "";
			dataSet.Tables\[0\].Rows.InsertAt(newRow,0);  //ändra för var informuläret ska hamna, nu hamnar det högst upp i tabellen
			dataSet.WriteXml(Server.MapPath("webs.xml"));
			Session\["Webs"\] = null;
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
			Session\["Webs"\] = null;
			XmlDataGrid.EditItemIndex = 0;//WebData.Items.Count - 1;
			XmlDataGrid.DataSource = LoadWebs();
			XmlDataGrid.DataBind();
		}

		\#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// \<summary\>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// \</summary\>
		private void InitializeComponent()
		{    
			this.XmlDataGrid.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.XmlDataGrid_SortCommand);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		\#endregion

		protected void XmlDataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
		{
			XmlDataGrid.CurrentPageIndex = 0;
			SortField = e.SortExpression;	//get the requested sorting field name and set it to SortField
			BindGrid();
		}

		protected DataSet LoadWebs()
		{
			string sourceXml = Server.MapPath("webs.xml");
			if (!(File.Exists(sourceXml)))
			{
				return null;
			}
			DataSet cachedDataSet = (DataSet)Session\["Webs"\];
			if (!(cachedDataSet == null))
			{
				return cachedDataSet;
			}
			DataSet dataSet = new DataSet();
			try
			{ 
				dataSet.ReadXml(sourceXml);
				Session\["Webs"\] = dataSet;
			}
			catch (Exception e)
			{
				ErrorMessage.Text = e.Message;
				dataSet = null;
			}
			return dataSet;
		}

	}
}

Permalänk: https://www.webforum.nu/p/1026792

## #14 — renholm, 2003-04-28T15:04Z

Slog ihop alla dina del trådar :)

Nu till svaret på din fråga.

```
...
<asp:TemplateColumn SortExpression="XmlDataGrid_SortCommand" HeaderText="Förnamn"> 
<ItemTemplate> 
...
```

SortExpression visar vilken kolumn den ska sortera efter du verkar försöka anropa din funktion där vilket blir fel.

Permalänk: https://www.webforum.nu/p/1026898

## #15 — Josef, 2003-04-28T15:06Z

En liten parantes: 

wwwstekaren: Använd gärna \[k o d\]-taggarna när du postar kod.

Permalänk: https://www.webforum.nu/p/1026901

## #16 — wwwstekaren, 2003-04-29T07:13Z

Får samma fel ändå

Permalänk: https://www.webforum.nu/p/1027404

## #17 — wwwstekaren, 2003-04-29T07:28Z

Cannot find column XmlDataGrid_SortCommand.

Permalänk: https://www.webforum.nu/p/1027415

## #18 — wwwstekaren, 2003-04-29T07:53Z

nu funkar det

\<asp:TemplateColumn SortExpression="XmlDataGrid_SortCommand" HeaderText="Förnamn"\> 
\<ItemTemplate\> 

På SortExpression ska det stå vad det heter ex Name, lastName mm Så nu funkar det

Permalänk: https://www.webforum.nu/p/1027424

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/74871-sortera-en-xml-fil-i-en-datagrid
