2
Answers

Call Server Side method dynamically added HTML button Ajax

Terry

Terry

9y
846
1

Hi, 

   In my asp:Table present in aspx, am adding buttons from code-behind dynamically. I am trying to call Server side Method on click of the button using Ajax.

Here's the code of buttons added dynamically :
            foreach (UnitPattern up in fp.UnitPattern)
            {
                System.Diagnostics.Debug.WriteLine("UNIT PATTERN : PlanType : " + up.UnitPlanType.UnitPlanName + " Direction : " + up.UnitDirection.DirectionTitle + " STATUS : " + up.Unit_Status + " UNIT NO : " + up.UnitNo);
               
                tc = new TableCell();


                LiteralControl lc = null;
                sb = new System.Text.StringBuilder();
                sb.Append("<input type=\"button\" onclick='javascriptmethodname();' name=\"");
                sb.Append(up.UnitPatternId.ToString() + "\" ");  // Add value for ID
                sb.Append(" text=\"");
                sb.Append(up.UnitNo + "\"  value=\"");
                sb.Append(up.UnitNo + "\"");
                sb.Append(" style=\"background:");


                if (up.Unit_Status == UnitStatus.Available)
                {
                    sb.Append("green;\" />");
                    lc = new LiteralControl(sb.ToString());
                    tc.Controls.Add(lc);
                }
                else if (up.Unit_Status == UnitStatus.Block)
                {
                    sb.Append("blue;\" />");
                    lc = new LiteralControl(sb.ToString());
                    tc.Controls.Add(lc);
                }
                else if (up.Unit_Status == UnitStatus.Sold)
                {
                    sb.Append("red;\" />");
                    lc = new LiteralControl(sb.ToString());
                    tc.Controls.Add(lc);
                }
                System.Diagnostics.Debug.WriteLine("SB = " + sb.ToString());
                tr.Controls.Add(tc);
            }




The result of generated sb with this code is :
SB = <input type="button" onclick='javascriptmethodname();' name="7"  text="6"  value="6" style="background:red;" />



In my aspx, the script code :
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">


<script type ="text/javascript">


    function javascriptmethodname() {
        $.ajax({
            type: "POST",
            url: "ProjectSelectForm.aspx/Foo",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            data: "{a: \"webmethod!\"}",
            cache: "false",
            async: "true",
            success: function (data) {
                alert(data.d);
            },
            error: function () {
                alert("error");
            }
        });
    }
</script>



Finally the server side method to be called :
        public static string Foo(string a)
        {
            System.Diagnostics.Debug.WriteLine("########  RCVD in WebMethod Para = " + a);
            return a;
        }



With the above code, on clicking a button, I get a message box with msg "undefined". and the Foo() of server side is never executed.

I want is that the ID/name of the button to be passed to the Foo(), as that is the ID of a model. Based on that ID value I can retrieve object from DB and thus move ahead.

Can you help me identify why I am getting this undefined msg & what am I missing here !!
any help is highly appreciated.

FYI, I have tried a lot using simple method i.e. adding a asp Button & setting it's Click event, but that doesn't work at all. Here are the links for that question - http://www.c-sharpcorner.com/Forums/Thread/291647/button-click-in-a-tablecell-never-fires-and-table-disappears.aspx

http://www.c-sharpcorner.com/Forums/Thread/290626/problem-with-dynamically-added-rows-with-buttons-to-table.aspx

So now, am trying out this way. 
Please help me, am stuck with this issue since long and not able to solve it yet.





 
Answers (2)