asp.net dropdown using xsl output

  • Thread starter Thread starter bic
  • Start date Start date
B

bic

Hi,

I have an sample code for an asp.net xml control to display xsl data as
follows. Can someone show how to modify both xsl code and asp.net code for
using this xml's name element to populate an asp.net dropdown. Also with a
dropdown item selected I want all elements of that item display on the page.

Thanks in advance.

---------------sample1.xml-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="sample1.xslt"?>
<Employees>
<Employee>
<EmployeeId>001</EmployeeId>
<Name>Stuart</Name>
<Age>28</Age>
</Employee>
</Employees>

---------------sample1.xslt-------------

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<b>Employee ID: </b><xsl:value-of select="Employees/Employee/EmployeeId"
/><br/>
<b>Name of Employee : </b><xsl:value-of select="Employees/Employee/Name"
/><br/>
<b>Age:</b><xsl:value-of select="Employees/Employee/Age" /><br/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

---------asp.net----------
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("people.xml"));

XslTransform trans = new XslTransform();
trans.Load(Server.MapPath("peopletable.xsl"));

xml1.Document = doc;
xml1.Transform = trans;

}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<%--<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="FirstName" DataValueField="Street">
</asp:DropDownList>
--%> </form>
</body>
</html>
 
Hi,

I have an sample code for an asp.net xml control to display xsl data as
follows. Can someone show how to modify both xsl code and asp.net code for
using this xml's name element to populate an asp.net dropdown.  Also with a
dropdown item selected I want all elements of that item display on the page.

Thanks in advance.

---------------sample1.xml-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="sample1.xslt"?>
<Employees>
  <Employee>
    <EmployeeId>001</EmployeeId>
    <Name>Stuart</Name>
    <Age>28</Age>
  </Employee>
</Employees>

---------------sample1.xslt-------------

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <b>Employee ID: </b><xsl:value-of select="Employees/Employee/EmployeeId"
/><br/>
    <b>Name of Employee : </b><xsl:value-of select="Employees/Employee/Name"
/><br/>
    <b>Age:</b><xsl:value-of select="Employees/Employee/Age" /><br/>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

---------asp.net----------
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html  >
   <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
         XmlDocument doc = new XmlDocument();
         doc.Load(Server.MapPath("people.xml"));

         XslTransform trans = new XslTransform();
         trans.Load(Server.MapPath("peopletable.xsl"));

         xml1.Document = doc;
         xml1.Transform = trans;

      }
   </script>
<head id="Head1" runat="server">
    <title>Xml Class Example</title>
</head>
<body>
   <h3>Xml Example</h3>
      <form id="form1" runat="server">
         <asp:Xml id="xml1" runat="server" />
<%--<asp:DropDownList ID="DropDownList1" runat="server"
           DataTextField="FirstName" DataValueField="Street">
    </asp:DropDownList>
--%>      </form>
</body>
</html>


You can try something like this

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();

Hope this helps
 
Thanks for your input Alexey. However when I tried it after clearing
compiler errors I got this

<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DropDownList1.DataSource = ds;
DropDownList1.DataBind();
}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="Name" DataValueField="Job">
</asp:DropDownList>
</form>
</body>
</html>

DataBinding: 'System.Data.DataRowView' does not contain a property with the
name 'Name'.

ALSO, I only tried it as a alternative but the requirements is to use the
XSL solution. So anyone please. Thanks.

James

--
bic


Alexey Smirnov said:
Hi,

I have an sample code for an asp.net xml control to display xsl data as
follows. Can someone show how to modify both xsl code and asp.net code for
using this xml's name element to populate an asp.net dropdown. Also with a
dropdown item selected I want all elements of that item display on the page.

Thanks in advance.

---------------sample1.xml-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="sample1.xslt"?>
<Employees>
<Employee>
<EmployeeId>001</EmployeeId>
<Name>Stuart</Name>
<Age>28</Age>
</Employee>
</Employees>

---------------sample1.xslt-------------

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<b>Employee ID: </b><xsl:value-of select="Employees/Employee/EmployeeId"
/><br/>
<b>Name of Employee : </b><xsl:value-of select="Employees/Employee/Name"
/><br/>
<b>Age:</b><xsl:value-of select="Employees/Employee/Age" /><br/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

---------asp.net----------
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("people.xml"));

XslTransform trans = new XslTransform();
trans.Load(Server.MapPath("peopletable.xsl"));

xml1.Document = doc;
xml1.Transform = trans;

}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<%--<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="FirstName" DataValueField="Street">
</asp:DropDownList>
--%> </form>
</body>
</html>


You can try something like this

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();

Hope this helps
.
 
Thanks for your input Alexey.  However when I tried it after clearing
compiler errors I got this

<html  >
   <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
          DataSet ds = new DataSet();
          ds.ReadXml(Server.MapPath("people.xml"));
          DropDownList1.DataSource = ds;
          DropDownList1.DataBind();
      }
   </script>
<head id="Head1" runat="server">
    <title>Xml Class Example</title>
</head>
<body>
   <h3>Xml Example</h3>
      <form id="form1" runat="server">
         <asp:Xml id="xml1" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server"
           DataTextField="Name" DataValueField="Job">
    </asp:DropDownList>
      </form>
</body>
</html>

DataBinding: 'System.Data.DataRowView' does not contain a property with the
name 'Name'.

ALSO, I only tried it as a alternative but the requirements is to use the
XSL solution.  So anyone please.  Thanks.

James

--
bic



You can try something like this
        DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath("people.xml"));
        DataView dv = ds.Tables["Employee"].DefaultView;
        DropDownList1.DataTextField = "Name";
        DropDownList1.DataValueField = "EmployeeId";
        DropDownList1.DataSource = dv;
        DropDownList1.DataBind();
Hope this helps
.- Hide quoted text -

- Show quoted text -

You get an error because you don't use DataView where you should
specify "Employee" as a defaultview. Please look at my example (line
#3).
 
Thanks for your input Alexey.  However when I tried it after clearing
compiler errors I got this
<html  >
   <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
          DataSet ds = new DataSet();
          ds.ReadXml(Server.MapPath("people.xml"));
          DropDownList1.DataSource = ds;
          DropDownList1.DataBind();
      }
   </script>
<head id="Head1" runat="server">
    <title>Xml Class Example</title>
</head>
<body>
   <h3>Xml Example</h3>
      <form id="form1" runat="server">
         <asp:Xml id="xml1" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server"
           DataTextField="Name" DataValueField="Job">
    </asp:DropDownList>
      </form>
</body>
</html>
DataBinding: 'System.Data.DataRowView' does not contain a property withthe
name 'Name'.
ALSO, I only tried it as a alternative but the requirements is to use the
XSL solution.  So anyone please.  Thanks.

Alexey Smirnov said:
Hi,
I have an sample code for an asp.net xml control to display xsl data as
follows. Can someone show how to modify both xsl code and asp.net code for
using this xml's name element to populate an asp.net dropdown.  Also with a
dropdown item selected I want all elements of that item display on the page.
Thanks in advance.
---------------sample1.xml-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="sample1.xslt"?>
<Employees>
  <Employee>
    <EmployeeId>001</EmployeeId>
    <Name>Stuart</Name>
    <Age>28</Age>
  </Employee>
</Employees>
---------------sample1.xslt-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <b>Employee ID: </b><xsl:value-of select="Employees/Employee/EmployeeId"
/><br/>
    <b>Name of Employee : </b><xsl:value-of select="Employees/Employee/Name"
/><br/>
    <b>Age:</b><xsl:value-of select="Employees/Employee/Age" /><br/>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
---------asp.net----------
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html  >
   <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
         XmlDocument doc = new XmlDocument();
         doc.Load(Server.MapPath("people.xml"));
         XslTransform trans = new XslTransform();
         trans.Load(Server.MapPath("peopletable.xsl"));
         xml1.Document = doc;
         xml1.Transform = trans;
      }
   </script>
<head id="Head1" runat="server">
    <title>Xml Class Example</title>
</head>
<body>
   <h3>Xml Example</h3>
      <form id="form1" runat="server">
         <asp:Xml id="xml1" runat="server" />
<%--<asp:DropDownList ID="DropDownList1" runat="server"
           DataTextField="FirstName" DataValueField="Street">
    </asp:DropDownList>
--%>      </form>
</body>
</html>
--
bic
You can try something like this
        DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath("people.xml"));
        DataView dv = ds.Tables["Employee"].DefaultView;
        DropDownList1.DataTextField = "Name";
        DropDownList1.DataValueField = "EmployeeId";
        DropDownList1.DataSource = dv;
        DropDownList1.DataBind();
Hope this helps
.- Hide quoted text -
- Show quoted text -

You get an error because you don't use DataView where you should
specify "Employee" as a defaultview. Please look at my example (line
#3).- Hide quoted text -

- Show quoted text -

Regarding XSLT. You can try to use XmlDataSource. I found an example
for you that may help: http://weblogs.asp.net/rajbk/pages/431322.aspx

Let me know if you need any help with this
 
Thanks Alexey. I still got this error with this code

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView; //Object reference not set
to an instance of an object.
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();

However, the xsl solution you gave me as you said is almost what I was
looking for. Actually I already found it a few days ago but i thought I
needed a little more. Alexey or anyone else for that matter, I now have a
dropdown but I also need to have data of the selected displayed on the page,
I.E. FirstName and LastName. Your help will be much appreciated.

James

--
bic


Alexey Smirnov said:
Thanks for your input Alexey. However when I tried it after clearing
compiler errors I got this
<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DropDownList1.DataSource = ds;
DropDownList1.DataBind();
}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="Name" DataValueField="Job">
</asp:DropDownList>
</form>
</body>
</html>
DataBinding: 'System.Data.DataRowView' does not contain a property with the
name 'Name'.
ALSO, I only tried it as a alternative but the requirements is to use the
XSL solution. So anyone please. Thanks.

:
Hi,
I have an sample code for an asp.net xml control to display xsl data as
follows. Can someone show how to modify both xsl code and asp.net code for
using this xml's name element to populate an asp.net dropdown. Also with a
dropdown item selected I want all elements of that item display on the page.
Thanks in advance.
---------------sample1.xml-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="sample1.xslt"?>
<Employees>
<Employee>
<EmployeeId>001</EmployeeId>
<Name>Stuart</Name>
<Age>28</Age>
</Employee>
</Employees>

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<b>Employee ID: </b><xsl:value-of select="Employees/Employee/EmployeeId"
/><br/>
<b>Name of Employee : </b><xsl:value-of select="Employees/Employee/Name"
/><br/>
<b>Age:</b><xsl:value-of select="Employees/Employee/Age" /><br/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
---------asp.net----------
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("people.xml"));
XslTransform trans = new XslTransform();
trans.Load(Server.MapPath("peopletable.xsl"));
xml1.Document = doc;
xml1.Transform = trans;
}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<%--<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="FirstName" DataValueField="Street">
</asp:DropDownList>
--%> </form>
</body>
</html>
You can try something like this
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();
Hope this helps
.- Hide quoted text -
- Show quoted text -

You get an error because you don't use DataView where you should
specify "Employee" as a defaultview. Please look at my example (line
#3).- Hide quoted text -

- Show quoted text -

Regarding XSLT. You can try to use XmlDataSource. I found an example
for you that may help: http://weblogs.asp.net/rajbk/pages/431322.aspx

Let me know if you need any help with this
.
 
Thanks Alexey.  I still got this error with this code

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView; //Object reference notset
to an instance of an object.
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();

However, the xsl solution you gave me as you said is almost what I was
looking for.  Actually I already found it a few days ago but i thought I
needed a little more.  Alexey or anyone else for that matter, I now have a
dropdown but I also need to have data of the selected displayed on the page,
I.E. FirstName and LastName.  Your help will be much appreciated.

James

--
bic



Alexey Smirnov said:
Thanks for your input Alexey.  However when I tried it after clearing
compiler errors I got this
<html  >
   <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
          DataSet ds = new DataSet();
          ds.ReadXml(Server.MapPath("people.xml"));
          DropDownList1.DataSource = ds;
          DropDownList1.DataBind();
      }
   </script>
<head id="Head1" runat="server">
    <title>Xml Class Example</title>
</head>
<body>
   <h3>Xml Example</h3>
      <form id="form1" runat="server">
         <asp:Xml id="xml1" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server"
           DataTextField="Name" DataValueField="Job">
    </asp:DropDownList>
      </form>
</body>
</html>
DataBinding: 'System.Data.DataRowView' does not contain a property with the
name 'Name'.
ALSO, I only tried it as a alternative but the requirements is to use the
XSL solution.  So anyone please.  Thanks.
James
--
bic
:
Hi,
I have an sample code for an asp.net xml control to display xsldata as
follows. Can someone show how to modify both xsl code and asp.net code for
using this xml's name element to populate an asp.net dropdown.  Also with a
dropdown item selected I want all elements of that item displayon the page.
Thanks in advance.
---------------sample1.xml-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="sample1.xslt"?>
<Employees>
  <Employee>
    <EmployeeId>001</EmployeeId>
    <Name>Stuart</Name>
    <Age>28</Age>
  </Employee>
</Employees>
---------------sample1.xslt-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <b>Employee ID: </b><xsl:value-of select="Employees/Employee/EmployeeId"
/><br/>
    <b>Name of Employee : </b><xsl:value-of select="Employees/Employee/Name"
/><br/>
    <b>Age:</b><xsl:value-of select="Employees/Employee/Age" /><br/>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
---------asp.net----------
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html  >
   <script runat="server">
      void Page_Load(Object sender, EventArgs e)
      {
         XmlDocument doc = new XmlDocument();
         doc.Load(Server.MapPath("people.xml"));
         XslTransform trans = new XslTransform();
         trans.Load(Server.MapPath("peopletable.xsl"));
         xml1.Document = doc;
         xml1.Transform = trans;
      }
   </script>
<head id="Head1" runat="server">
    <title>Xml Class Example</title>
</head>
<body>
   <h3>Xml Example</h3>
      <form id="form1" runat="server">
         <asp:Xml id="xml1" runat="server" />
<%--<asp:DropDownList ID="DropDownList1" runat="server"
           DataTextField="FirstName" DataValueField="Street">
    </asp:DropDownList>
--%>      </form>
</body>
</html>
--
bic
You can try something like this
        DataSet ds = new DataSet();
        ds.ReadXml(Server.MapPath("people.xml"));
        DataView dv = ds.Tables["Employee"].DefaultView;
        DropDownList1.DataTextField = "Name";
        DropDownList1.DataValueField = "EmployeeId";
        DropDownList1.DataSource = dv;
        DropDownList1.DataBind();
Hope this helps
.- Hide quoted text -
- Show quoted text -
You get an error because you don't use DataView where you should
specify "Employee" as a defaultview. Please look at my example (line
#3).- Hide quoted text -
- Show quoted text -
Regarding XSLT. You can try to use XmlDataSource. I found an example
for you that may help:http://weblogs.asp.net/rajbk/pages/431322.aspx
Let me know if you need any help with this
.- Hide quoted text -

- Show quoted text -

Well, I don't see why you got an error. I copied the complete code to
my test app and it works - I see dropdown with "Stuart" in it. Anyway,
good that you see how you can use XSLT now.

Regarding your question about selected item. Make sure
AutoPostback="True" for the dropdownlist. Set OnSelectedIndexChanged
to an event where you want to display selected item. Then use it to
assign the value, e.g. to a Label Control on your page. For example:

Label1.Text = DropDownList1.SelectedItem.Text;

Hope this helps
 
Alexey, looks like we are moving right along here. However I ran into a
couple of issues. First, I was not able to find a way to set
OnSelectedIndexChanged to an event. Andwith this two lines of code in
page_lonnad I a m ag ain getting this.
Label label1= new Label();
label1.Text=DropDownList1.SelectedItem.Text;
//Object reference not set to an instance of an object.
--
bic


Alexey Smirnov said:
Thanks Alexey. I still got this error with this code

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView; //Object reference not set
to an instance of an object.
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();

However, the xsl solution you gave me as you said is almost what I was
looking for. Actually I already found it a few days ago but i thought I
needed a little more. Alexey or anyone else for that matter, I now have a
dropdown but I also need to have data of the selected displayed on the page,
I.E. FirstName and LastName. Your help will be much appreciated.

James

--
bic



Alexey Smirnov said:
On Jan 19, 6:54 pm, bic <[email protected]> wrote:
Thanks for your input Alexey. However when I tried it after clearing
compiler errors I got this
<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DropDownList1.DataSource = ds;
DropDownList1.DataBind();
}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="Name" DataValueField="Job">
</asp:DropDownList>
</form>
</body>
</html>
DataBinding: 'System.Data.DataRowView' does not contain a property with the
name 'Name'.
ALSO, I only tried it as a alternative but the requirements is to use the
XSL solution. So anyone please. Thanks.

:
Hi,
I have an sample code for an asp.net xml control to display xsl data as
follows. Can someone show how to modify both xsl code and asp.net code for
using this xml's name element to populate an asp.net dropdown. Also with a
dropdown item selected I want all elements of that item display on the page.
Thanks in advance.
---------------sample1.xml-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="sample1.xslt"?>
<Employees>
<Employee>
<EmployeeId>001</EmployeeId>
<Name>Stuart</Name>
<Age>28</Age>
</Employee>
</Employees>

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<b>Employee ID: </b><xsl:value-of select="Employees/Employee/EmployeeId"
/><br/>
<b>Name of Employee : </b><xsl:value-of select="Employees/Employee/Name"
/><br/>
<b>Age:</b><xsl:value-of select="Employees/Employee/Age" /><br/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
---------asp.net----------
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("people.xml"));
XslTransform trans = new XslTransform();
trans.Load(Server.MapPath("peopletable.xsl"));
xml1.Document = doc;
xml1.Transform = trans;
}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<%--<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="FirstName" DataValueField="Street">
</asp:DropDownList>
--%> </form>
</body>
</html>
You can try something like this
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();
Hope this helps
.- Hide quoted text -
- Show quoted text -
You get an error because you don't use DataView where you should
specify "Employee" as a defaultview. Please look at my example (line
#3).- Hide quoted text -
- Show quoted text -
Regarding XSLT. You can try to use XmlDataSource. I found an example
for you that may help:http://weblogs.asp.net/rajbk/pages/431322.aspx
Let me know if you need any help with this
.- Hide quoted text -

- Show quoted text -

Well, I don't see why you got an error. I copied the complete code to
my test app and it works - I see dropdown with "Stuart" in it. Anyway,
good that you see how you can use XSLT now.

Regarding your question about selected item. Make sure
AutoPostback="True" for the dropdownlist. Set OnSelectedIndexChanged
to an event where you want to display selected item. Then use it to
assign the value, e.g. to a Label Control on your page. For example:

Label1.Text = DropDownList1.SelectedItem.Text;

Hope this helps
.
 
Alexey, First I want to thank you for all the help which kept me gong. I am
still getting the same error also which you said you are not getting

Label label1= new Label();
label1.Text=SelectedItem.Text;
//Object reference not set to an instance of an object.

And even with this code working how do I get all the relevant data to show
in my label1 besides the DropDownList1.selectedItem.Text in this case is
just FirstName. How do I get it to display LastName and FirstName in label1
when OnSelectedIndexChanged occurs? BTW, could you show me how to set it to
an event? Thanks very much.
--
bic


Alexey Smirnov said:
Thanks Alexey. I still got this error with this code

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView; //Object reference not set
to an instance of an object.
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();

However, the xsl solution you gave me as you said is almost what I was
looking for. Actually I already found it a few days ago but i thought I
needed a little more. Alexey or anyone else for that matter, I now have a
dropdown but I also need to have data of the selected displayed on the page,
I.E. FirstName and LastName. Your help will be much appreciated.

James

--
bic



Alexey Smirnov said:
On Jan 19, 6:54 pm, bic <[email protected]> wrote:
Thanks for your input Alexey. However when I tried it after clearing
compiler errors I got this
<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DropDownList1.DataSource = ds;
DropDownList1.DataBind();
}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="Name" DataValueField="Job">
</asp:DropDownList>
</form>
</body>
</html>
DataBinding: 'System.Data.DataRowView' does not contain a property with the
name 'Name'.
ALSO, I only tried it as a alternative but the requirements is to use the
XSL solution. So anyone please. Thanks.

:
Hi,
I have an sample code for an asp.net xml control to display xsl data as
follows. Can someone show how to modify both xsl code and asp.net code for
using this xml's name element to populate an asp.net dropdown. Also with a
dropdown item selected I want all elements of that item display on the page.
Thanks in advance.
---------------sample1.xml-------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="sample1.xslt"?>
<Employees>
<Employee>
<EmployeeId>001</EmployeeId>
<Name>Stuart</Name>
<Age>28</Age>
</Employee>
</Employees>

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<b>Employee ID: </b><xsl:value-of select="Employees/Employee/EmployeeId"
/><br/>
<b>Name of Employee : </b><xsl:value-of select="Employees/Employee/Name"
/><br/>
<b>Age:</b><xsl:value-of select="Employees/Employee/Age" /><br/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
---------asp.net----------
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("people.xml"));
XslTransform trans = new XslTransform();
trans.Load(Server.MapPath("peopletable.xsl"));
xml1.Document = doc;
xml1.Transform = trans;
}
</script>
<head id="Head1" runat="server">
<title>Xml Class Example</title>
</head>
<body>
<h3>Xml Example</h3>
<form id="form1" runat="server">
<asp:Xml id="xml1" runat="server" />
<%--<asp:DropDownList ID="DropDownList1" runat="server"
DataTextField="FirstName" DataValueField="Street">
</asp:DropDownList>
--%> </form>
</body>
</html>
You can try something like this
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("people.xml"));
DataView dv = ds.Tables["Employee"].DefaultView;
DropDownList1.DataTextField = "Name";
DropDownList1.DataValueField = "EmployeeId";
DropDownList1.DataSource = dv;
DropDownList1.DataBind();
Hope this helps
.- Hide quoted text -
- Show quoted text -
You get an error because you don't use DataView where you should
specify "Employee" as a defaultview. Please look at my example (line
#3).- Hide quoted text -
- Show quoted text -
Regarding XSLT. You can try to use XmlDataSource. I found an example
for you that may help:http://weblogs.asp.net/rajbk/pages/431322.aspx
Let me know if you need any help with this
.- Hide quoted text -

- Show quoted text -

Well, I don't see why you got an error. I copied the complete code to
my test app and it works - I see dropdown with "Stuart" in it. Anyway,
good that you see how you can use XSLT now.

Regarding your question about selected item. Make sure
AutoPostback="True" for the dropdownlist. Set OnSelectedIndexChanged
to an event where you want to display selected item. Then use it to
assign the value, e.g. to a Label Control on your page. For example:

Label1.Text = DropDownList1.SelectedItem.Text;

Hope this helps
.
 
Back
Top