DataSet Fill()方法每次都很慢

时间:2018-02-13 03:28:33

标签: asp.net ajax vb.net performance dataset

我为该数据网格创建了一个数据网格和过滤器。包含两个下拉列表和每个下拉列表更改的过滤器调用AJAX函数从数据库中获取新数据到数据网格。它是一个大型数据库,但我调用的SP只需大约1秒即可获取数据。但是当我调试代码时,数据集的Fill()方法获得无限时间来填充方法。我每个下拉列表都会调用相同的函数。您可以使用以下代码进行检查。

<System.Web.Services.WebMethod()>
<ScriptMethod(UseHttpGet:=False, ResponseFormat:=ResponseFormat.Json)>
Shared Function LoadCases(Id As String, statusId As Integer, severityId As Integer) As List(Of XCases)
    Try
        Dim dsCasesDataset As New DataSet
        Dim pCases As New List(Of XCases)
        connString = AppSettings("conALSQL")
        Using conn As New SqlConnection(connString)
            Using SqlCommand As New SqlCommand("get_cases", conn)
                SqlCommand.CommandType = CommandType.StoredProcedure
                SqlCommand.Parameters.Add("@OrganizationId", SqlDbType.VarChar).Value = Id
                SqlCommand.Parameters.Add("@statusId", SqlDbType.Int).Value = statusId
                SqlCommand.Parameters.Add("@severityId", SqlDbType.Int).Value = severityId
                conn.Open()
                Using da As New SqlDataAdapter(SqlCommand)
                    da.SelectCommand.CommandTimeout = 300
                    ' Fill dataset
                    da.Fill(dsCasesDataset)
                End Using
                conn.Close()
            End Using
        End Using

        For Each dataRow As DataRow In dsCasesDataset.Tables(0).Rows
            Dim pcase As New XCases
                 'Fill data to object
            pCases.Add(pcase)
        Next
        dsCasesDataset.Clear()
        Return platformCases
    Catch ex As Exception
        Throw
    End Try

End Function

我正在使用同一功能的另一个版本从较大的表中获取数据,但它运行没有任何问题,而且速度很快。我也尝试过SQLDataReader。它也有同样的问题。有人可以帮我找到我错了吗?

这是我调用的AJAX jquery函数

$("#ddlStatus").on("change", function () {
            statusId = $("#ddlStatus").val() == null ? 0 : $("#ddlStatus").val()
            severityId = $("#ddlSeverity").val() == null ? 0 : $("#ddlSeverity").val() 
            $.ajax({
                type: "POST",
                contentType: "application/json; charset=utf-8",
                url: window.location.pathname + "/LoadCases",
                dataType: "json",
                data: JSON.stringify({ Id: targetId, statusId: statusId, severityId: severityId }),
                success: function (Ddata) {
                    data = Ddata.d;
                    //refill the grid
                    if (data.length == 0) {
                        casesgrid.datagrid.loadData(data);
                        $(".dvNoDataError").css({ "display": "block" });
                    } else {
                        casesgrid.datagrid.loadData(data);
                        $(".dvNoDataError").css({ "display": "none" });
                    }
                },
                error: function (error) {
                }
            });
        })

0 个答案:

没有答案