如何从javascript函数调用C#代码

如何从javascript函数调用C#代码,javascript,c#,asp.net,Javascript,C#,Asp.net,在我的应用程序中,我需要调用aspx.cs方法来从javascript函数调用绑定Gridview。我如何才能做到这一点?我搜索并找到了一些代码,但它对我不起作用 我尝试了以下代码: 客户端: <script> function MyHeader() { PageMethods.BindHeaderGrid(); //I tried this one also var x = document.getElementById(

在我的应用程序中,我需要调用aspx.cs方法来从javascript函数调用绑定Gridview。我如何才能做到这一点?我搜索并找到了一些代码,但它对我不起作用

我尝试了以下代码:

客户端:

<script>
 function MyHeader() {      

           PageMethods.BindHeaderGrid(); //I tried this one also
           var x = document.getElementById('HeaderDiv');
           if (x.style.display === 'none') {
               x.style.display = 'block';
               img2.src= "minus.gif";               

           } else {
               x.style.display = 'none';
               img2.src= "plus.gif";
           }      
       }       
</script>

<img id='img2' width="9px" border="0" src="plus.gif" onclick="MyHeader()"/> Header <div id="HeaderDiv" style="display:none">         
          <asp:GridView ID="GrdHeader" runat="server" AutoGenerateColumns="false">
              <Columns>
                  <asp:BoundField  DataField="SenderID" HeaderText="SenderID" />
                  <asp:BoundField  DataField="ReceiverID" HeaderText="ReceiverID" />
                  <asp:BoundField DataField="Transactiondate" HeaderText="Transactiondate" />
                  <asp:BoundField DataField="RecordCount" HeaderText="RecordCount" />
                  <asp:BoundField DataField="DispositionFlag" HeaderText="DispositionFlag" />
              </Columns>
          </asp:GridView></div>

谢谢

您不能这样做-从客户端调用服务器端的函数

我看到了您的代码,我为您提供了两个选项:

  • 如果您只想显示或隐藏Gridview#GrdHeader,那么您可以在页面加载时调用“BindHeaderGrid”(或相同的)

  • 如果您希望在用户单击到#img2时重新加载Gridview,那么您可以将Gridview#GrdHeader拆分到一个页面,并通过iframe标记将其重新加载到此页面,而在使用单击到img#img2时仅重新加载iframe标记

  • 看看这个

    JavaScript

            $.ajax({
                    type: "POST",
                    dataType: "json",
                    data: {data: data}, // if no data available leave this out
                    url: "example.asmx/exampleMethod", //if you wanna call a function in the page just include the function name in here
                    success: function (data) {
    
                        // do something if the function is success
    
                    }
                });
    
    C#Web服务

     public class Example: System.Web.Services.WebService
        {
    
            [WebMethod]
            public void exampleMethod(Parameters)
            {
                // Something you wanna do
    
               //If you wanna return something to javascript 
                Context.Response.ContentType = "text/HTML";
                var js = new JavaScriptSerializer();
                Context.Response.Write(js.Serialize(returnDataObject));
            }
    }
    
    如果是你的话,我想他的可能行得通

            $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: "BindHeaderGrid()", 
                    success: function (data) {
    
                    }
                });
    

    那样做是错误的。您不能从Javascript强制ASPX数据网格
    Bind()
    。这需要回发邮件。我建议您查看scriptmanager和updatepanel。@uɐpuɐ613;Ɔ,我不想从codebehind调用javascript函数。我需要从javascript函数调用.cs方法。请参考@uɐpuɐɥƆ,我也尝试了这个方法,但我的函数没有在.cs和javascript中调用调试,并说明您得到了什么错误,您的选择是什么?我需要在单击图像(+)时加载并显示gridview。当图像(-)单击隐藏gridviewServerSide:aspx.cs受保护的无效页面_加载(对象发送方,事件参数e){if(!Page.IsPostBack){BindHeaderGrid()}
            $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: "BindHeaderGrid()", 
                    success: function (data) {
    
                    }
                });