Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Populate ComboBox in Custome Ribbon

Posted on 2011-09-30
14
Medium Priority
?
4,014 Views
Last Modified: 2013-11-10
How do I populate a combobox that is in a custom ribbon. When I try to use the .Items.Add() method (or whatever it's called) I get an error message that reads:

Cannot convert from 'object' to 'Microsoft.Office.Tools.Ribon.RibbonDropDown'.

I have included the code I have so far.

Any and all help is welcome!
private void ThisWorkbook_Startup(object sender, System.EventArgs e)
        {   

            OracleConnection cs = new OracleConnection("User Id=MyUserID;Password=MyPassword;Data Source=OracleSID");
            OracleDataAdapter da = new OracleDataAdapter("SELECT JOB_CODE, JOB_NAME FROM JCJOB", cs);

            DataTable dt = new DataTable();

            da.Fill(dt);
            
            for (int i = 0; i < dt.Rows.Count; i++)
            {
		//Error is generated at this line!                
		Globals.Ribbons.Ribbon1.cmbProject.Items.Add(dt.Rows[i]["JOB_CODE"]);                
                
            }
        }

Open in new window

0
Comment
Question by:Gary Jones
[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
  • 8
  • 6
14 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 36896985
You would need to create a RibbonDropDown, and add instances of RibbonDropDownItems.

foreach (DataRow dr in dt.Rows)
{
     string jobCode = dr["JOB_CODE].ToString();
     dropDown.Items.Add(new RibbonDropDownItem() { Label = jobCode });                
}
0
 
LVL 1

Author Comment

by:Gary Jones
ID: 36897633
I am very new to c# so i am not sure what you mean by create a RibbonDropDown and add instanced of RibbonDropDownItems. Can I have an example of what you men?

Thanks in advance.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 36897776
To create an instance of an object, you need to use the constructor (new keyword).  

This form might be a little too much for you, so let's rewrite it:

 
dropDown.Items.Add(new RibbonDropDownItem() { Label = jobCode });    

Open in new window

           

1) Construct a RibbonDropDown:

RibbonDropDown dropDown = new RibbonDropDown();

Open in new window


2) Loop through each of your data rows, using the enumerator, instead of an index variable (i in your case):

foreach (DataRow dr in dt.Rows)
{
}

Open in new window


3) Create RibbonDropDownItems for each row, and add to the RibbonDropDown.  Set the Label fro the drop-down item to the field value.

foreach (DataRow dr in dt.Rows)
{
    RibbonDropDownItem dropDownItem = new RibbonDropDownItem();
    dropDownItem.Label = dr["JOB_CODE].ToString();
}

Open in new window


4) Add the RibbonDropDown to the control:

Globals.Ribbons.Ribbon1.cmbProject.Items.Add(ribbonDropDown);

Open in new window

0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 1

Author Comment

by:Gary Jones
ID: 36899555
I now get thefollowing errors:

Error      1      Cannot create an instance of the abstract class or interface 'Microsoft.Office.Tools.Ribbon.RibbonDropDown'

Error      2      Cannot create an instance of the abstract class or interface 'Microsoft.Office.Tools.Ribbon.RibbonDropDownItem'
0
 
LVL 96

Accepted Solution

by:
Bob Learned earned 500 total points
ID: 36901067
I guess this is the perfect time to say that I really don't like the ribbon bar, so I don't have much experience with it...but, that doesn't mean that I am walking away from this.

Can you tell me if you feel comfortable trying to work with this (meaning:  can you work with it, and does it work)?

RibbonDropDownItem item 
      = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();

Open in new window

0
 
LVL 1

Author Comment

by:Gary Jones
ID: 36905553
TheLearnedOne, I was able to compile the RibbonDropDownItem item = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem(); statement, what is the next step?
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 36906024
Next step:

item.Label = dr["JOB_CODE].ToString();

Open in new window


0
 
LVL 1

Author Comment

by:Gary Jones
ID: 36906247
The code in the "Next step" appears to have worked but now I think I must associate the item.Label to the cmbProject object. How do I add the values to the cmbProject "object" (not sure if that is the correct verbiage). Sorry, but I am extremely new to c# programming (no duh, right ;)).
0
 
LVL 96

Assisted Solution

by:Bob Learned
Bob Learned earned 500 total points
ID: 36906283
Next step is to create a RibbonDropDown:

RibbonDropDown dropDown = Globals.Factory.GetRibbonFactory().CreateRibbonDropDown(); 

Open in new window


0
 
LVL 1

Author Comment

by:Gary Jones
ID: 36906426
The RibbonDropDown (dropDown) has been created. I keep trying to add item.Label to the dropDown but I know I am still missing something as nothing is working. So, after the RibbonDropDown and RibbonDropDownItems have been created successfully, what is the next step?
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 36906461
Next step is to add the dropdown items to the dropdown:

dropDown.Items.Add(item);

Open in new window

0
 
LVL 1

Author Comment

by:Gary Jones
ID: 36906559
Error: Index must be within the bounds of the list. Parameter name: index. Not sure what that means but that is the error I get now.
0
 
LVL 1

Assisted Solution

by:Gary Jones
Gary Jones earned 0 total points
ID: 36906694
TheLearnedOne, I figured out where the syntax has to go, I did not put the RibbonDropDownItem statement in the foreach section of the code so only one dropdown item was getting created and I have multiple items to add. I have attached the final code that works.
foreach (DataRow dr in dt.Rows)
            {
                RibbonDropDownItem item = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem();
                
                item.Label = dr["JOB_CODE"].ToString();                
                Globals.Ribbons.Ribbon1.cmbProject.Items.Add(item);
            }

Open in new window

0
 
LVL 1

Author Closing Comment

by:Gary Jones
ID: 36935305
I had a difficult time following the code, I did not know where the code needed to go and was confused (the reason for B grade).
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

Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …

604 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