Solved

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

Posted on 2008-10-08
10
205 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
Active Directory Webinar

We all know we need to protect and secure our privileges, but where to start? Join Experts Exchange and ManageEngine on Tuesday, April 11, 2017 10:00 AM PDT to learn how to track and secure privileged users in Active Directory.

 

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 500 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: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

821 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