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

x
?
Solved

How do I get my object back from an item in a DropDownList ?

Posted on 2008-10-08
10
Medium Priority
?
214 Views
Last Modified: 2010-04-21
I have a dictionary with a class (UserClass) asvalue and a int as key
I populate the DropDownList with the dictionary using datasource
When the user selects an item from the CreatorFilter Dropdownlist I want to get the UserClass object back to get access to its ID property

Tried this: Guid UserID = (UserClass)CreatorFilter.SelectedItem).ID;
But gets the following error: Cannot convert type 'System.Web.UI.WebControls.ListItem' to 'UserClass'

How can I access the UserClass object from the selected item in the dropdownlost?
// I have a dictionary with a class (UserClass) asvalue and a int as key
private Dictionary<int, UserClass> createdBy;
 
//I populate the DropDownList with the dictionary using datasource
CreatorFilter.DataSource = createdBy;
CreatorFilter.DataTextField = "Value";
CreatorFilter.DataValueField = "Key";
CreatorFilter.DataBind();
 
//When the user selects an item from the CreatorFilter Dropdownlist I want to get the UserClass object back to get access to its ID property
// Tried this:
 
Guid UserID = (UserClass)CreatorFilter.SelectedItem).ID;
 
// But I get an error: 
// Cannot convert type 'System.Web.UI.WebControls.ListItem' to 'UserClass'
 
// How can I access the UserClass object from the selected item in the dropdownlost?

Open in new window

0
Comment
Question by:fc_curling
10 Comments
 
LVL 8

Expert Comment

by:Ashutosh Vyas
ID: 22668521
I am not too good with Generics, and have not tried your code, but my first look and I feel it should rather be:



Guid UserID = (UserClass)CreatorFilter.SelectedValue).ID;

Open in new window

0
 
LVL 13

Expert Comment

by:TechTiger007
ID: 22668523
Try using
(UserClass)CreatorFilter.SelectedValue;;
0
 
LVL 13

Expert Comment

by:SameerJagdale
ID: 22668530
what type of data you will get for CreatorFilter.SelectedItem?
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:fc_curling
ID: 22668654
@ashutosh9910:, @TechTiger007:

>>Guid creator = ((UserClass)CreatorFilter.SelectedValue).ID;
Gives the following error:  Cannot convert type 'string' to 'UserClass'

@SameerJagdale:
I want to get the UserClass object back which I put into the dropdownlist using the datasource = dictionary.

0
 

Author Comment

by:fc_curling
ID: 22668679
This is the UserClass:
public class UserClass
{
  public Guid ID;
  public string Username;
  public string Fullname;
  public int? Role;
 
  public UserClass(User user)
  {
    this.ID = user.ID;
    this.Username = user.Username;
    this.Fullname = user.FullName;
    this.Role = user.Role;
  }
  public UserClass()
  {
  }
 
  public override string ToString()
  {
    return this.Username;
  }
 
}

Open in new window

0
 
LVL 13

Expert Comment

by:SameerJagdale
ID: 22668733
i know that.. what i mean to ask is - currently what is the type of data you are getting..
object o = CreatorFilter.SelectedItem;
need info about o?
0
 

Author Comment

by:fc_curling
ID: 22668853
CreatorFilter.SelectedItem; returns a ListItem object
0
 

Author Comment

by:fc_curling
ID: 22669195
Important info: This is a dropdownlist control from a ASP.NET 3.5 webpage.
0
 
LVL 13

Accepted Solution

by:
SameerJagdale earned 1500 total points
ID: 22669316

codebehind..selectedindexchanged event
---
        int key = int.Parse(CreatorFilter.SelectedValue);
        UserClass ucclass = createdBy[key];
 
-- page load
createdBy = new Dictionary<int, UserClass>(2);
        createdBy[0] = new UserClass(1);
        createdBy[1] = new UserClass(2);
 
        //I populate the DropDownList with the dictionary using datasource
        CreatorFilter.DataSource = createdBy;
        CreatorFilter.DataTextField = "Value";
        CreatorFilter.DataValueField = "Key";
        CreatorFilter.DataBind();
 
 
my user class
-------
public class UserClass
{
    public UserClass()
    {
        
    }
 
    public UserClass(int id)
    {
        this.Id = id;
    }
 
    private int _id;
 
    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }
 
}

Open in new window

0
 

Author Closing Comment

by:fc_curling
ID: 31504194
Sorry for the long time to close this question. I implemented a solution based on your code and forgot to close it.
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Integration Management Part 2
Loops Section Overview
Suggested Courses

783 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question