Solved

Passing parameter to code behind

Posted on 2016-09-22
17
37 Views
Last Modified: 2016-09-22
Hi,

in the front end, I have the code like this
<asp:Button id="MoveAllbtn" onclick="MoveAllbtn_Click" CustomParameter="listBox1" runat="server" text=">>" />      

Since I want to use the same function, I want to pass the same of the listBox to the function.

In the code behind, I have the code
    protected void MoveAllbtn_Click(object sender, EventArgs e)
    {
       

        foreach (var item in listBox1.Items.Cast<ListItem>().Reverse())
        {
              //some codes
        }
        
        string ID=e.CommandArgument.ToString();
	testBox.Text = ID;
        
    }

Open in new window


I am getting error

CS1061: 'System.EventArgs' does not contain a definition for 'CommandArgument' and no extension method 'CommandArgument' accepting a first argument of type 'System.EventArgs' could be found (are you missing a using directive or an assembly reference?)


any ideas?  thanks
0
Comment
Question by:mcrmg
  • 7
  • 6
  • 4
17 Comments
 
LVL 12

Expert Comment

by:Ramkisan Jagtap
Comment Utility
Convert object sender to button and then get its id

protected void MoveAllbtn_Click(object sender, EventArgs e)
    {
       

        foreach (var item in listBox1.Items.Cast<ListItem>().Reverse())
        {
              //some codes
        }
        
       Button moveAllbtn=(Button)sender;
	testBox.Text = moveAllbtn.ID;
        
    }

Open in new window

0
 

Author Comment

by:mcrmg
Comment Utility
Thanks for the quick reply. I am geting this error:

 CS0104: 'Button' is an ambiguous reference between 'System.Web.UI.WebControls.Button' and 'System.Windows.Forms.Button'
0
 
LVL 19

Expert Comment

by:Daniel Van Der Werken
Comment Utility
This is how you fix that. However, I don't think this code is going to function the way you want.

 
   protected void MoveAllbtn_Click(object sender, EventArgs e)
    {

        foreach (var item in listBox1.Items.Cast<ListItem>().Reverse())
        {
            //string iText = item.Text;
        }

        System.Web.UI.WebControls.Button moveAllBtn = (System.Web.UI.WebControls.Button)sender;

        string ID = moveAllBtn.CommandArgument.ToString();
        testBox.Text = ID;
    }

Open in new window


Can you explain more on what you're trying to do?
0
 
LVL 12

Expert Comment

by:Ramkisan Jagtap
Comment Utility
Yes, as Daniel said use System.Web.UI.WebControls.Button
0
 
LVL 19

Expert Comment

by:Daniel Van Der Werken
Comment Utility
This will get the custom value you passed:

    protected void MoveAllbtn_Click(object sender, EventArgs e)
    {

        foreach (var item in listBox1.Items.Cast<ListItem>().Reverse())
        {
            string iText = item.Text;
        }

        System.Web.UI.WebControls.Button moveAllBtn = (System.Web.UI.WebControls.Button)sender;

        AttributeCollection attributColl = moveAllBtn.Attributes;
        if (attributColl != null && attributColl.Count > 0 && attributColl["CustomParameter"] != null)
        {
            string myCustomParameterValue = attributColl["CustomParameter"];
        }

        string ID = moveAllBtn.CommandArgument.ToString();
        testBox.Text = ID;
    }

Open in new window

0
 

Author Comment

by:mcrmg
Comment Utility
I am getting this error  (sorry)

CS0104: 'AttributeCollection' is an ambiguous reference between 'System.Web.UI.AttributeCollection' and 'System.ComponentModel.AttributeCollection'
0
 
LVL 12

Expert Comment

by:Ramkisan Jagtap
Comment Utility
Use System.Web.UI.AttributeCollection there
0
 
LVL 19

Expert Comment

by:Daniel Van Der Werken
Comment Utility
You'd have to cast. Seems strange. You're adding too many using statements.

        System.Web.UI.AttributeCollection attributColl = (System.Web.UI.AttributeCollection)moveAllBtn.Attributes;
        if (attributColl != null && attributColl.Count > 0 && attributColl["CustomParameter"] != null)
        {
            string myCustomParameterValue = attributColl["CustomParameter"];
        }

Open in new window


Get rid of your Windows using if you can.
1
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:mcrmg
Comment Utility
This is what I have
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
//using System.Windows.Forms;
using System.Text;
using System.ComponentModel;
using System.Drawing;
using System.Web.UI.AttributeCollection;

public partial class _test2 : System.Web.UI.Page

{
    protected void Page_Load(object sender, EventArgs e)
    {


    }

    protected void MoveAllbtn_Click(object sender, EventArgs e)
    {



        foreach (var item in listBox1.Items.Cast<ListItem>().Reverse())
        {
            //something
        }

        System.Web.UI.WebControls.Button moveAllBtn = (System.Web.UI.WebControls.Button)sender;

        AttributeCollection attributColl = moveAllBtn.Attributes;
        if (attributColl != null && attributColl.Count > 0 && attributColl["CustomParameter"] != null)
        {
            string myCustomParameterValue = attributColl["CustomParameter"];
        }

        string ID = moveAllBtn.CommandArgument.ToString();
        testBox.Text = ID;
        
    }

Open in new window

0
 
LVL 12

Expert Comment

by:Ramkisan Jagtap
Comment Utility
Does it work now?
0
 

Author Comment

by:mcrmg
Comment Utility
this is the error I am getting

CS0138: A using namespace directive can only be applied to namespaces; 'System.Web.UI.AttributeCollection' is a type not a namespace
0
 
LVL 12

Expert Comment

by:Ramkisan Jagtap
Comment Utility
Remove following line:
using System.Web.UI.AttributeCollection;
0
 

Author Comment

by:mcrmg
Comment Utility
After removing,

CS0104: 'AttributeCollection' is an ambiguous reference between 'System.Web.UI.AttributeCollection' and 'System.ComponentModel.AttributeCollection'

thanks
0
 
LVL 19

Accepted Solution

by:
Daniel Van Der Werken earned 250 total points
Comment Utility
Did you use my suggested code?

        System.Web.UI.AttributeCollection attributColl = (System.Web.UI.AttributeCollection)moveAllBtn.Attributes;
        if (attributColl != null && attributColl.Count > 0 && attributColl["CustomParameter"] != null)
        {
            string myCustomParameterValue = attributColl["CustomParameter"];
        }

Open in new window


It does not look like you are.
1
 

Author Comment

by:mcrmg
Comment Utility
I am sorry if I confused everyone....this is the latest code I use, and it looks like it is moving..thanks

The error I am getting is
CS0103: The name 'myCustomParameterValue' does not exist in the current context

        foreach (var item in listBox1.Items.Cast<ListItem>().Reverse())
        {
            string iText = item.Text;
        }

        System.Web.UI.AttributeCollection attributColl = (System.Web.UI.AttributeCollection)MoveAllbtn.Attributes;
        if (attributColl != null && attributColl.Count > 0 && attributColl["CustomParameter"] != null)
        {
            string myCustomParameterValue = attributColl["CustomParameter"];
        }

        testBox.Text = myCustomParameterValue;

Open in new window

0
 
LVL 12

Assisted Solution

by:Ramkisan Jagtap
Ramkisan Jagtap earned 250 total points
Comment Utility
System.Web.UI.AttributeCollection attributColl = (System.Web.UI.AttributeCollection)MoveAllbtn.Attributes;
        if (attributColl != null && attributColl.Count > 0 && attributColl["CustomParameter"] != null)
        {
            string myCustomParameterValue = attributColl["CustomParameter"];
  testBox.Text = myCustomParameterValue;
}

Open in new window

0
 

Author Closing Comment

by:mcrmg
Comment Utility
Thank you very much.
0

Featured Post

Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.

Join & Write a Comment

Sometimes in DotNetNuke module development you want to swap controls within the same module definition.  In doing this DNN (somewhat annoyingly) swaps the Skin and Container definitions to the default admin selections.  To get around this you need t…
A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
This video discusses moving either the default database or any database to a new volume.
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

763 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

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now