Solved

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

Posted on 2008-10-08
10
209 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 

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

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!

Question has a verified solution.

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

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
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.
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

635 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