Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

onclick how to run my own method in c sharp

Posted on 2006-06-29
21
Medium Priority
?
317 Views
Last Modified: 2008-01-09
Hello this code runs a javascrpt with name saveSelection.
I want it to run a c# method. How to do that?

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            CheckBox Velg = (CheckBox)e.Row.FindControl("Velg");
            Velg.Attributes.Add("onclick", "saveSelection(this,'" + e.Row.Cells[0].Text + "');");
        }
    }
0
Comment
Question by:m-jansen
  • 14
  • 7
21 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17011541
Have you heard anything about AJAX (AjaxPro)?

Bob
0
 

Author Comment

by:m-jansen
ID: 17011568
Very little. Think I've heard the name mentioned some place.
0
 

Author Comment

by:m-jansen
ID: 17011592
Why do you ask?
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 96

Expert Comment

by:Bob Learned
ID: 17011753
AjaxPro is a library that makes it possible to call server-side methods from client-side Javascript.  We use it here to get a simplify generating DataSet objects, since C#/VB.NET is so much easier.

Bob
0
 

Author Comment

by:m-jansen
ID: 17011829
ohh ok. So I must use the evening to learn Ajax... ok.ok :)
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17011858
What is saveSelection doing?

Bob
0
 

Author Comment

by:m-jansen
ID: 17011896
right now it's doing nothing more that to view some info from a row in gridview. I wanted to use a c# method instead becuase it's easier to find what I need there.

   function saveSelection(obj, idxId)
    {        
        alert("obj: "+obj + " idexId: " + idxId);
    }
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17011970
What method do you need to call?  One possible method is to call the method, get the result, place the result into a hidden <input> element and then extract the result from the Javascript side.

Bob
0
 

Author Comment

by:m-jansen
ID: 17011980
But if it can be done by useing javascript method i would be glad too.... or i'll start to learn ajax
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17012002
So, which C# method are you looking to call?

Bob
0
 

Author Comment

by:m-jansen
ID: 17012049
going to call all kinds of methods I think.

convert this:
Velg.Attributes.Add("onclick", "saveSelection(this,'" + e.Row.Cells[0].Text + "');");

to work with c# methods

like this
Velg.Attributes.Add("onclick", "mycsharpmethod(e)");

but I get error: e is undefined
0
 

Author Comment

by:m-jansen
ID: 17012077
I must make GridViewRowEventArgs e protected and available for both my asp script and class file, but that's not a good solution I guess.
0
 

Author Comment

by:m-jansen
ID: 17012123
I mean like this....
Velg.Attributes.Add("onclick", "mycsharpmethod('" + e + "');");
0
 

Author Comment

by:m-jansen
ID: 17012172
or maybe this like this....
Velg.Attributes.Add("onclick", "'" + list.Add(21) + "'");
0
 

Author Comment

by:m-jansen
ID: 17012289
I've installed AjaxPro.2.dll in project now. Feel free to tell me how do this with ajax.
0
 

Author Comment

by:m-jansen
ID: 17012448
   protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            CheckBox Velg = (CheckBox)e.Row.FindControl("Velg");
            Velg.Attributes.Add("onclick", ""+ list.Add(32) +"");
        }
    }

This compiles and run without exeptions, but it does not add 32 to my array list. Why not?
0
 
LVL 96

Accepted Solution

by:
Bob Learned earned 250 total points
ID: 17012966
1) Add a reference to AjaxPro.dll to the project

2) Add using AjaxPro;

3) Add the [AjaxPro.AjaxMethod()] attribute to the method that you need to call

4) Register the class that you need to access:

     Utility.RegisterTypeForAjax(typeof(DataAccessLayer));

5) Here is an example in a Javascript function to call the method:

   DataAccessLayer.ViewResults(QLNAME, QLFIELDS, QLFILTER, QLSORT, mdbExportResultCallback);

6) Here are a few lines from the call back function:

   function mdbExportResultCallback(res)
   {
       writeLine("Received data from the server, importing into Access database.");
            
      if (res.value.Tables[0].Columns[0].Name == "Error")
      {
          alert(res.value.Tables[0].Rows[0][res.value.Tables[0].Columns[0].Name]);
          return;
      }

7) You can see from the Javascript code, that you have the same properties as a DataSet/DataTable (it's like magic!!!).

Bob
0
 

Author Comment

by:m-jansen
ID: 17018068
well, thanks. That really learned me alot. But My question is still unsolved.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17030472
Tell me, my friend, where you are still having a problem, and how I can help.

Bob
0
 

Author Comment

by:m-jansen
ID: 17030536
To be honest I installed Atlas instead. That was better to use with my VS2005. But my problem is now solved. I didn’t need to use javascript directly. I don’t remember right now what that solved it, but Atlas did it a lot easier for me to use Ajax. So since you directed me that way I think your answer posted 06/29/2006 09:00PM BST can be considered as accepted.
0
 

Author Comment

by:m-jansen
ID: 17030556
Thanks for all help
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Question has a verified solution.

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

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
I recently went through the process of creating a Calendar Control of events with the basis of using a database to keep track of the dates that are selectable, one requirement was to have the selected date pop-up in a simple lightbox.  At first this…
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…
When cloud platforms entered the scene, users and companies jumped on board to take advantage of the many benefits, like the ability to work and connect with company information from various locations. What many didn't foresee was the increased risk…

824 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