使用ajax json C#将数据从数据库加载到gridview时出错 [英] Error in loading data from database to gridview using ajax json C#

查看:62
本文介绍了使用ajax json C#将数据从数据库加载到gridview时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将数据从数据库加载到`gridview`同时滚动页面。这样工作



1)最初页面加载时gridview显示10个数据组成`数据库`(工作正常)



2)滚动`gridview`显示一个图像加载,那个时候服务器端函数被调用ajax`json`方法从数据库加载下5个数据



3)成功点击此函数后,javascript删除图像进行加载,并将gridview附加下5个数据。



现在的问题是在删除图像后,gridview会在网格视图中一次又一次地显示数据库中的第一个数据。我怀疑我的javascript代码中的onsucess函数请帮助。



C#

I'm trying to load data from database to `gridview` while scrolling page.It work like this

1)Intially when the page is loaded gridview display 10 data form the `database`(works fine)

2)while scrolling `gridview` display a image for loading and that time a server side function is called by using ajax `json` method for loading next 5 data from database

3)after successfully hitting this function the javascript removes the image for loading and appends the gridview with next 5 data.

Now the problem is after removing the image the gridview shows the first data from the database again and again in the gridview for the next 5 times . I have suspicion on onsucess function in my javascript code Please Help.

C#

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        newscontainer.DataSource = GetNewsPageWise(1, 10);
        newscontainer.DataBind();
    }
}

public static DataSet GetNewsPageWise(int pageIndex, int pageSize)
{
    string constring = "server=***;uid=***;pwd=******;database=*******";
    using (SqlConnection con = new SqlConnection(constring))
    {
        using (SqlCommand cmd = new SqlCommand("[GetNewsPageWise]"))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@PageIndex", pageIndex);
            cmd.Parameters.AddWithValue("@PageSize", pageSize);
            cmd.Parameters.Add("@PageCount", SqlDbType.Int, 4).Direction = ParameterDirection.Output;
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataSet ds = new DataSet())
                {
                    sda.Fill(ds, "popnews");
                    DataTable dt = new DataTable("PageCount");
                    dt.Columns.Add("PageCount");
                    dt.Rows.Add();
                    dt.Rows[0][0] = cmd.Parameters["@PageCount"].Value;
                    ds.Tables.Add(dt);
                    return ds;
                }
            }
        }
    }
}
       
[WebMethod]
public static string GetCustomers(int pageIndex)
{
    //Added to similate delay so that we see the loader working
    //Must be removed when moving to production
    System.Threading.Thread.Sleep(2000);
    return GetNewsPageWise(pageIndex, 5).GetXml();
}





Javascript





Javascript

<script type="text/javascript">
var pageIndex = 1;
var pageCount;
$(function () {
    //Remove the original GridView header
    $("[id$=newscontainer] tr").eq(0).remove();
});
//Load GridView Rows when DIV is scrolled
$(window).scroll(function () {
    if ($(window).scrollTop() == $(document).height() - $(window).height()) {
        GetRecords();
    }
});
//Function to make AJAX call to the Web Method
function GetRecords() {
    pageIndex++;
    if (pageIndex == 2 || pageIndex <= pageCount) {

        //Show Loader
        if ($("[id$=newscontainer] .loader").length == 0) {
            var row = $("[id$=newscontainer] tr").eq(0).clone(true);
            row.addClass("loader");
            row.children().remove();
            row.append('<table><tbody><tr><td colspan="999" style="background-color:white"> <asp:Image ID="loader" runat="server" Height="50px" ImageUrl="~/Images/loader.gif" Width="51px" /></td></tr></tbody></table>');
            $("[id$=newscontainer]").append(row);
        }
        $.ajax({
            type: "POST",
            url: "News.aspx/GetCustomers",
            data: '{pageIndex: ' + pageIndex + '}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: OnSuccess,
            failure: function (response) {
                alert(response.d);
            },
            error: function (response) {
                alert(response.d);
            }
        });
    }
}


 function OnSuccess(response) {
    var xmlDoc = $.parseXML(response.d);
    var xml = $(xmlDoc);
    pageCount = parseInt(xml.find("PageCount").eq(0).find("PageCount").text());
    var customers = xml.find("popnews");
    $("[id$=newscontainer] .loader").remove();
    customers.each(function () {
        var customer = $(this);
        var row = $("[id$=newscontainer] tr").eq(0).clone(true);
        $(".postedon").html(customer.find("newsdate").text());
        $(".news").html(customer.find("news").text());
        $("[id$=newscontainer]").append(row);
    });

    //Hide Loader
    $("#loader").hide();
}





使用的存储过程





Stored Procedure Used

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[GetNewsPageWise]
@PageIndex INT = 1
,@PageSize INT = 10
,@PageCount INT OUTPUT
 AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
   ORDER BY [newsid] ASC
 )AS RowNumber
   ,[newsid]
   ,[news]
  ,[newsdate]
    ,[newstime]
    INTO #Results
  FROM [popnews]

   DECLARE @RecordCount INT
    SELECT @RecordCount = COUNT(*) FROM #Results

 SET @PageCount = CEILING(CAST(@RecordCount AS DECIMAL(10, 2)) /            
 CAST(@PageSize AS DECIMAL(10, 2)))
    PRINT       @PageCount

        SELECT * FROM #Results
       WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 
         AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1

      DROP TABLE #Results
         END

推荐答案

function (){
// 删除原始GridView标题


[id
("[id


= newscontainer] tr)。eq( 0 )。remove();
});
// 滚动DIV时加载GridView行
=newscontainer] tr").eq(0).remove(); }); //Load GridView Rows when DIV is scrolled


这篇关于使用ajax json C#将数据从数据库加载到gridview时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆