Вызов метода на стороне сервера из JSON - PullRequest
0 голосов
/ 03 апреля 2010

Как вызвать метод на стороне сервера из JSON. Ниже приведен код, который я использую

СТОРОНА СЕРВЕРА:

[WebMethod]
private void GetCustomer( string NoOfRecords)
{

    string connString = "Data Source=Something;Initial Catalog=AdventureWorks;Trusted_Connection=True;";
    SqlConnection sCon = new SqlConnection(connString);
    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Sales.Customer WHERE CustomerID < '" + NoOfRecords+ "' ", sCon);
    DataSet ds = new DataSet();
    da.Fill(ds);
    GvDetails.DataSource = ds.Tables[0];
    GvDetails.DataBind();

}

На стороне клиента:

 <div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:TextBox ID="txtValue" runat="server"></asp:TextBox>
    <asp:Button ID="btnShow" runat="server" Text="Sow Records without PostBack" />

    <asp:GridView ID="GvDetails" runat="server">
    </asp:GridView>
</div>

<script language="javascript" type="text/javascript">


 var txtID = document.getElementById('txtValue');
 $.ajax({
   type: "POST",
   url: "Default.aspx/GetCustomer",
   data: "{Seconds:'" + txtID +"'}",
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function(response) {
     alert(response); 
   }
  });
</script>

Теперь я хочу, чтобы при нажатии кнопки я вызывал функцию на стороне клиента [JSON], которая передает значение текстового поля функции. Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 04 апреля 2010

Похоже, вы хотите повторно связать сетку и обновить ее на странице. В этом случае проще всего поместить кнопку и сетку в панель обновлений. Дайте кнопке событие щелчка на стороне сервера. Поскольку он находится на панели обновлений, он будет обрабатывать вызов ajax для вас, используя ajax, и содержимое панели обновлений будет автоматически обновляться.

Если вы хотите выполнить ajax-вызовы вручную, вы не сможете просто привязать сетку таким образом, вместо этого вам потребуется метод GetCustomer, который будет возвращать что-то, что использовалось бы вашим клиентским javascript. Я считаю, что вместо использования вызова $ .ajax (jquery), если вы поместите тег метода ScriptService в метод, вы можете выполнить вызов javascript PageMethods.GetCustomer (NoOfRecords). Синтаксис вызова javascript точно такой же, как синтаксис c #, с которым вы объявили метод, но в javascript вы добавляете «PageMethods». спереди.

Примерно так:

Html:

<div> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
    </asp:ScriptManager> 
    <asp:TextBox ID="txtValue" runat="server" CssClass="value"></asp:TextBox> 
    <asp:Button ID="btnShow" runat="server" CssClass="buttonshow" Text="Sow Records without PostBack" /> 

</div> 

<script language="javascript" type="text/javascript">   

    //attach event to click event of button with class of 'buttonshow'.
    $('.buttonshow').click(function()
    {
        //get value of textbox with class 'value'
        var NoOfRecords = $('.value').val();

        //Call GetCustomer method, pass NumberOfRecords, and define the onsuccess and onerror functions.
        PageMethods.GetCustomer(
            NoOfRecords, 
            function(result) {
               alert('success:' + result);
            },
            function(result) {
               alert('error:' + result.get_message());
            });
    });


</script>  
<asp:GridView ID="GvDetails" runat="server"> 
</asp:GridView> 
1 голос
/ 03 апреля 2010

Сначала необходимо добавить атрибут ScriptService к методу. Чтобы передать параметр, вам необходимо закодировать его в виде строки: 3 ошибки, которых следует избегать при использовании jQuery с ASP.NET AJAX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...