我有正确的表格渲染,并使用固定的页眉和页脚,以及服务器端处理。我根据找到的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
我做错了吗?
答案 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);
来正确检索参数。