• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 319
  • Last Modified:

onclick how to run my own method in c sharp

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
m-jansen
Asked:
m-jansen
  • 14
  • 7
1 Solution
 
Bob LearnedCommented:
Have you heard anything about AJAX (AjaxPro)?

Bob
0
 
m-jansenAuthor Commented:
Very little. Think I've heard the name mentioned some place.
0
 
m-jansenAuthor Commented:
Why do you ask?
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
Bob LearnedCommented:
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
 
m-jansenAuthor Commented:
ohh ok. So I must use the evening to learn Ajax... ok.ok :)
0
 
Bob LearnedCommented:
What is saveSelection doing?

Bob
0
 
m-jansenAuthor Commented:
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
 
Bob LearnedCommented:
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
 
m-jansenAuthor Commented:
But if it can be done by useing javascript method i would be glad too.... or i'll start to learn ajax
0
 
Bob LearnedCommented:
So, which C# method are you looking to call?

Bob
0
 
m-jansenAuthor Commented:
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
 
m-jansenAuthor Commented:
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
 
m-jansenAuthor Commented:
I mean like this....
Velg.Attributes.Add("onclick", "mycsharpmethod('" + e + "');");
0
 
m-jansenAuthor Commented:
or maybe this like this....
Velg.Attributes.Add("onclick", "'" + list.Add(21) + "'");
0
 
m-jansenAuthor Commented:
I've installed AjaxPro.2.dll in project now. Feel free to tell me how do this with ajax.
0
 
m-jansenAuthor Commented:
   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
 
Bob LearnedCommented:
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
 
m-jansenAuthor Commented:
well, thanks. That really learned me alot. But My question is still unsolved.
0
 
Bob LearnedCommented:
Tell me, my friend, where you are still having a problem, and how I can help.

Bob
0
 
m-jansenAuthor Commented:
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
 
m-jansenAuthor Commented:
Thanks for all help
0

Featured Post

The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

  • 14
  • 7
Tackle projects and never again get stuck behind a technical roadblock.
Join Now