Solved

Passing parameter to code behind

Posted on 2016-09-22
17
44 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
ID: 41810792
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
ID: 41810798
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 20

Expert Comment

by:Daniel Van Der Werken
ID: 41810825
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
Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

 
LVL 12

Expert Comment

by:Ramkisan Jagtap
ID: 41810843
Yes, as Daniel said use System.Web.UI.WebControls.Button
0
 
LVL 20

Expert Comment

by:Daniel Van Der Werken
ID: 41810852
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
ID: 41810873
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
ID: 41810876
Use System.Web.UI.AttributeCollection there
0
 
LVL 20

Expert Comment

by:Daniel Van Der Werken
ID: 41810881
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
 

Author Comment

by:mcrmg
ID: 41810894
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
ID: 41810928
Does it work now?
0
 

Author Comment

by:mcrmg
ID: 41810932
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
ID: 41810935
Remove following line:
using System.Web.UI.AttributeCollection;
0
 

Author Comment

by:mcrmg
ID: 41810942
After removing,

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

thanks
0
 
LVL 20

Accepted Solution

by:
Daniel Van Der Werken earned 250 total points
ID: 41810965
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
ID: 41810992
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
ID: 41811020
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
ID: 41811032
Thank you very much.
0

Featured Post

Gigs: Get Your Project Delivered by an Expert

Select from freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely and get projects done right.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Entity Framework 7 41
C# MVC and a global static factory that never dies 4 57
When should I use a controller? 3 34
imap read mail 1 26
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…
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…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
In a recent question (https://www.experts-exchange.com/questions/28997919/Pagination-in-Adobe-Acrobat.html) here at Experts Exchange, a member asked how to add page numbers to a PDF file using Adobe Acrobat XI Pro. This short video Micro Tutorial sh…

815 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