我在DataTables中搜索的单个列无效

时间:2016-12-08 20:26:01

标签: jquery datatables-1.10

我有正确的表格渲染,并使用固定的页眉和页脚,以及服务器端处理。我根据找到的here添加了个人列搜索(文本输入)。但是,无论我在哪个过滤器框中输入所有这些过滤器,只能搜索ID(第一列)而不是它们所在的列。

以下是我如何初始化DatatTable:

Imports System.Data
Imports System.Data.SqlClient
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click

        Dim cnn As SqlConnection
        Dim connectionString As String
        Dim sql As String

        connectionString = "data source=servername;" & _
        "initial catalog=databasename;user id=username;password=password;"
        cnn = New SqlConnection(connectionString)
        cnn.Open()
        sql = "SELECT * FROM Product"
        Dim dscmd As New SqlDataAdapter(sql, cnn)
        Dim ds As New DataSet
        dscmd.Fill(ds)
        DataGridView1.DataSource = ds.Tables(0)
        cnn.Close()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button2.Click


        Dim xlApp As Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
        Dim misValue As Object = System.Reflection.Missing.Value
        Dim i As Integer
        Dim j As Integer

        xlApp = New Excel.ApplicationClass
        xlWorkBook = xlApp.Workbooks.Add(misValue)
        xlWorkSheet = xlWorkBook.Sheets("sheet1")

        For i = 0 To DataGridView1.RowCount - 2
            For j = 0 To DataGridView1.ColumnCount - 1
                xlWorkSheet.Cells(i + 1, j + 1) = _
                    DataGridView1(j, i).Value.ToString()
            Next
        Next

        xlWorkSheet.SaveAs("C:\vbexcel.xlsx")
        xlWorkBook.Close()
        xlApp.Quit()

        releaseObject(xlApp)
        releaseObject(xlWorkBook)
        releaseObject(xlWorkSheet)

        MsgBox("You can find the file C:\vbexcel.xlsx")
    End Sub

    Private Sub releaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub
End Class

我做错了吗?

1 个答案:

答案 0 :(得分:2)

调试代码几乎是不可能的,因为缺少部分。我会告诉你我会做什么,而不是为你调试。

了解问题所在:

1)您的JavaScript没有做您认为应该做的事情。 (我猜这就是问题)

2)您的服务器端代码(PHP)没有按照您认为的那样做。

验证您的代码确实出现了什么问题:

1)您是否在Chrome中打开了检查员,并确认您的代码中没有任何JavaScript错误。如果您有错误,请首先编辑代码以删除每个错误。然后,如果问题仍然存在,请转到步骤2!

2)然后我将输出到DataTable AJAX请求的文件。您可以在文件顶部添加ServerSide.php来更改file_put_contents("request.log", var_export($_REQUEST));

echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);

然后,打开文件并搜索您在搜索框中输入的文本。

3)如果您成功通过了第2步,我们需要检查从服务器端处理得到的结果是什么。只需更改文件的结尾:

$jsonData = json_encode(SSP::simple($_GET, $sql_details, $table, $primaryKey, $columns ));
file_put_contents("output.log", $jsonData);
echo $jsonData;

要:

$_GET

这会将JSON输出添加到日志文件中。打开它,检查你在那里看到的结果是否符合你的期望。

4)是时候查看结果了!如果您没有收到搜索过滤器值,则表明您的JavaScript存在问题。如果您收到搜索过滤器但返回错误的输出,则服务器端的PHP代码存在问题。

我希望它有所帮助!

请注意,您可以使用" Network"完成相同的操作。 Chrome检查器中的标签。

<强>更新 我在你的JavaScript代码中看到你使用&#34; POST&#34;将数据发送到服务器。我还在服务器端代码的最后一行看到here,它正在使用&#34; GET&#34; ($_POST)阅读从网页发送的内容。如果您使用此代码,请注意您应该在PHP中使用100 * (current/duration);来正确检索参数。