Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 764
  • Last Modified:

can I bind my arralist to a datalist?

hi there,
Im trying to output an arraylist using a datalist.  I have tried the following although this fails..

    <ItemTemplate>
        <%# DataBinder.Eval(Container.DataItem, "_options")%>
    </ItemTemplate>

The complication I have that I cant get around is that the arraylist is a property of my custom built class.  Therefore I have the following structure (included within the code snippet part) which I bind to using the following

        DataList1.DataSource = results._options;
        DataList1.DataBind();

Problem I have is that I dont know what to put within the markup, denoted below with the triple x to output the elements within the arraylist!

<li><%# DataBinder.Eval(Container.DataItem, "xxx") %></li>

Please tell me how!

With this working I expect to get the following html

<li>Terry</li>
<li>Jane</li>
<li>Tim</li>

If I was to do the following

_options.add("terry");
_options.add("Jane");
_options.add("Tim");


Thanks


public class results
{
    public string _title;
    public ArrayList _options = new ArrayList();
 
	public results()
	{
	}
}

Open in new window

0
jimbona27
Asked:
jimbona27
  • 8
  • 3
1 Solution
 
Roopesh_7Commented:
do like this

class myClass
{
public string _name;

public myClass(string name)
{
_name = name;
}

public string Name
{
get
{
return _name;
}
}

<aspataList id="DataList1" runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"Name") %>
</ItemTemplate>
</aspataList>

public class test : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataList DataList1;

private void Page_Load(object sender, System.EventArgs e)
{
ArrayList al = new ArrayList();
al.Add(new myClass("Peter"));
al.Add(new myClass("Mary"));

DataList1.DataSource = al;
DataList1.DataBind();
}
}


0
 
jimbona27Author Commented:
yeah great, this is pretty much what i've been doing, creating objects which is always a good thing anyway...

although what your doing different to me is

al.Add(new myClass("Peter"));

whereas i've used datalists with a datatable behind it to get around it, not knowing you can do what you've done here.
i'll try it on monday to know for sure whether it works for me.
thanks in the meantime.

0
 
jimbona27Author Commented:
i've changed my code now but how do I refer to the property within the markup, like so

<%# DataBinder.Eval(Container.DataItem, "xxx") %>

I've tried


<%# DataBinder.Eval(Container.DataItem, "Name") %>

although this fails:
 Exception Details: System.Web.HttpException: DataBinding: 'classname' does not contain a property with the name 'Name'.

Note: The Name is a public variable within the object like below:



public class test
{
    public string _Name;
    ....
 
}

Open in new window

0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
Roopesh_7Commented:
could you please sent whole code in cs. B'cos its working here
0
 
jimbona27Author Commented:
i've seen this online but fails for me:

<%#  ((System.Collection.ArrayList)DataBinder.Eval(Container.DataItem, "[\"myarraylist\"]") )[0] %>
0
 
jimbona27Author Commented:
does this help?
the error message I get:

 DataBinding: 'test does not contain a property with the name '_username'.

thanks
// code that creates the arraylist
 
        ArrayList options = new ArrayList();
 
        while (reader.Read())
        {
            options.Add(new test((Int32)reader["id"],(string)reader["username"],(string)reader["address"]);
        }
 
...
 
// the bind
 
        datalist1.DataSource = db.GetData();
        datalist1.DataBind();
 
 
// markup
 
<%# DataBinder.Eval(Container.DataItem, "Username") %>
 
 
 
// the class
 
 
public test
{
    public Int32 _id;
    public string _a;
    public string _b;
    public string _c;
 
    public comment()
    {
    }
	public comment(Int32 a, string b, string c)
	{
        _a = a;
        _b = b;
        _c = c;
	}
 
}

Open in new window

0
 
jimbona27Author Commented:
sorry markup should read

<%# DataBinder.Eval(Container.DataItem, "_username") %>
 
0
 
jimbona27Author Commented:
think i got it.
you have to have a method to return the property of the object to use in the markup.
i was just using the public property itself.
0
 
jimbona27Author Commented:
how do i get access to the properties in the code behind file?

so i have an arraylist of cars

i.e.
        cars test = new cars();
        test = (cars)myfunctiion();  // cast the return arraylist into car objects -- fails

i can kinda see why but I dont know how to do it.

i want to access the 'id' property within my object,

something probably along this line although it fails for me:

response.write(myarraylist.row[0].column[1]);

writes "hello"


// creating the arraylist with objects
 
public arraylist myfunctiion()
{
        ArrayList test = new ArrayList();
 
        while (reader.Read())
        {
            
            test.Add(new cars("10","hello");
        }
 
        return test;
}

Open in new window

0
 
jimbona27Author Commented:
got it.
0
 
Roopesh_7Commented:
Good...I just wait for you...:) you are on the right track
0

Featured Post

Ask an Anonymous Question!

Don't feel intimidated by what you don't know. Ask your question anonymously. It's easy! Learn more and upgrade.

  • 8
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now