Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从jQuery AJAX调用动态填充ASP.NET Gridview_Asp.net_Vb.net - Fatal编程技术网

从jQuery AJAX调用动态填充ASP.NET Gridview

从jQuery AJAX调用动态填充ASP.NET Gridview,asp.net,vb.net,Asp.net,Vb.net,错误: 我正在开发一个web应用程序,它从后台的MSSQL服务器提取数据。从ajax调用我的web方法不是问题所在,而是在收到数据后显示数据 我的报告页面上有以下gridview: cannot refer to an instance member of a class within a shared method 从数据库中提取数据的web方法称为DBManager.asmx,声明如下:每次更改下拉列表时,通过ajax调用该方法: <asp:GridView ID="gridRepo

错误:

我正在开发一个web应用程序,它从后台的MSSQL服务器提取数据。从ajax调用我的web方法不是问题所在,而是在收到数据后显示数据

我的报告页面上有以下gridview:

cannot refer to an instance member of a class within a shared method
从数据库中提取数据的web方法称为DBManager.asmx,声明如下:每次更改下拉列表时,通过ajax调用该方法:

<asp:GridView ID="gridReport" runat="server"></asp:GridView>
它不是报告页的代码隐藏文件。从DB返回的数据当前位于数据集变量名ds中

有没有办法将该GridView的数据源分配给从.asmx文件中提取的数据集,或者我可以尝试一种很好的解决方法?我曾尝试在代码隐藏报告页面中创建共享方法,但没有成功,还尝试将GetSpecificReport方法放在代码隐藏中


感谢您的帮助,如果我需要提供更多信息或发布更多代码,请告诉我。

我认为使用updatepanel可以实现您想要的功能,而无需进行太多更改


基本上,在页面加载或任何适合您的情况下填充网格,然后使用updatepanel进行刷新。

我认为使用updatepanel可以实现您想要的功能,而无需进行太多更改


基本上,在页面加载或任何适合您的情况下填充网格,然后使用updatepanel进行刷新。

我将提供3个建议:

首先也是最重要的一点是,使用telerik grid之类的工具,可以从webmethod返回JSON并直接绑定到该JSON:

也就是说,我创建了一个小示例,您可以在webmethod中呈现gridview并重新发出HTML

也可以使用RenderControl在HTML中绘制表格:

下面是一个简化的示例,它使用jquery.ajax重新绘制控件,而不使用任何updatepanel等。不过updatepanel可能工作得更好

ASPX:

这将在服务器上创建一个替换gridview,将其呈现为html,然后将其发送回


您也可以使用类似AngularJS的东西,只需保留一段JSON供您的服务器更新,并使用它通过AngularJS实时绑定到网格

我想提出三点建议:

首先也是最重要的一点是,使用telerik grid之类的工具,可以从webmethod返回JSON并直接绑定到该JSON:

也就是说,我创建了一个小示例,您可以在webmethod中呈现gridview并重新发出HTML

也可以使用RenderControl在HTML中绘制表格:

下面是一个简化的示例,它使用jquery.ajax重新绘制控件,而不使用任何updatepanel等。不过updatepanel可能工作得更好

ASPX:

这将在服务器上创建一个替换gridview,将其呈现为html,然后将其发送回


您也可以使用类似AngularJS的东西,只需保留一段JSON供您的服务器更新,并使用它通过AngularJS实时绑定到网格

我认为您使用这种方法是因为希望能够在不回发的情况下更新gridview,对吗。我有回发功能。这很难看:\n我认为您使用这种方法是因为您希望能够在不回发的情况下更新gridview吗?是的。我让它和回发一起工作。它很难看:\
<WebMethod()> _
Public Function GetSpecificReport(ByVal strFilter As String) As String()
   <%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="TymeJVTest._Default" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
     <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script>

        function blag() {
            var gridID = "<%= GridView1.ClientID %>";
            $.ajax({
                type: "POST",
                data: {},
                contentType: "application/json;charset=utf-8",
                dataType: "json",
                async: true,
                url: "Default.aspx/GetSomeData",
                success: function (data) {
                    //not sure why this is data.d , but what the hey
                    var theHtml = data.d;
                    $("#" + gridID).html(theHtml);
                },
                failure: function () {
                    alert("Sorry,there is a error!");
                }
            });               
        }
    </script>
    <h2>
        Welcome to ASP.NET!
    </h2>
    <p>
        To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.
    </p>
    <p>
        You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409"
            title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
    </p>
    <asp:GridView ID="GridView1" runat="server">
    </asp:GridView>
    <a href="#"onclick="blag();" >Test</a>
</asp:Content>
 public partial class _Default : System.Web.UI.Page
    {        
        protected void Page_Load(object sender, EventArgs e)
        {

            int[] theObject = {1, 2, 3, 4};

            GridView1.DataSource = theObject;
            GridView1.DataBind();
        }


        [WebMethod]
        public static String GetSomeData()
        {
            GridView gv = new GridView();
            System.IO.StringWriter stringWriter = new System.IO.StringWriter();
            HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);
            int[] someNewData = {10, 11, 12, 13, 14};
            gv.DataSource = someNewData;
            gv.DataBind();

            gv.RenderControl(htmlWriter);
            return stringWriter.ToString();
        }
    }