搜索功能在 .aspx 文件中不起作用

问题描述 投票:0回答:1

我有一个名为 Narudzbe.aspx 的网页,它显示订单的 GridView。我正在尝试实现一个搜索功能,用户可以在其中输入特定的订单号并检索相应的订单。但是,搜索功能似乎没有按预期工作。

相关代码如下:

Narudzbe.aspx:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Narudzbe.aspx.vb" Inherits="Mišković_OMIS_projekt.Narudzbe" %>

<!DOCTYPE html>
<!-- Rest of the HTML code -->

<form id="form2" runat="server">
    <!-- Rest of the form code -->
    <div class="search">
        <input type="text" id="txtSearch" placeholder="Pretraži po broju narudžbe"/>
        <input type="button" id="btnSearch" value="Pretraži" onclick="btnSearch_Click"/>
        <!-- Rest of the code -->
    </div>
</form>

Narudzbe.aspx.vb:

Imports System.Data.SqlClient

Partial Class Narudzbe
    Inherits System.Web.UI.Page

    Protected WithEvents btnSearch As Button
    Protected WithEvents txtSearch As TextBox

    Protected Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click
        Dim searchValue As String = txtSearch.Text.Trim()

        If Not String.IsNullOrEmpty(searchValue) Then
            SqlDataSource1.SelectCommand = "SELECT Narudžba.[ID narudžbe], Kupac.Ime, Narudžba.[Datum primitka], Narudžba.[Datum isporuke], Status.[Naziv statusa] FROM Narudžba INNER JOIN Kupac ON Narudžba.[ID kupac] = Kupac.[ID kupac] INNER JOIN Status ON Narudžba.[ID statusa] = Status.[ID statusa] WHERE [ID narudžbe] = @SearchValue"
            SqlDataSource1.SelectParameters.Clear()
            SqlDataSource1.SelectParameters.Add("SearchValue", searchValue)
        Else
            SqlDataSource1.SelectCommand = "PodaciZaTablicuNarudzbe"
            SqlDataSource1.SelectParameters.Clear()
        End If

        GridView1.DataBind()
    End Sub
End Class

我面临的问题是,当我在搜索输入字段中输入特定订单号并单击“Pretraži”按钮时,GridView 不会更新以显示筛选结果。似乎 btnSearch_Click 事件处理程序未被触发或 SQL 查询未正确执行。

我仔细检查了代码并确保按钮和文本框具有正确的 ID。是什么导致了这个问题?关于如何修复搜索功能有什么建议吗?

注意:我正在为这个 Web 应用程序使用 Visual Studio 和 SQL Server。

提前感谢您的帮助!

html asp.net vb.net
1个回答
0
投票

几件事:

当我创建一个 asp.net webforms 页面时,

我明白了:

<form id="form1" runat="server">

    <div>

    </div>


</form>

所以,默认名称是 form1。自从最近 20 年的书籍、示例代码,以及当您创建新页面时,表单标签默认为 form1。你改变这个有什么特别的原因吗? (可能有这样做的理由,但我想不出一个好的理由。但是,既然你正在改变那个表单标签 id,那么你最好有一个奇妙的惊天动地的理由这样做?你有那个令人难以置信的这样做有很大的理由吗?

下一个:

当我从工具箱中拖放一个按钮时,我得到这个:

        <asp:Button ID="Button1" runat="server" Text="Button" />

再次:

关于为什么你不在这里使用 asp.net 按钮,是否有一个巨大的、伟大的、奇妙的、惊天动地的想法?

所以,你可以放入一个 HTML 按钮,但要小心,因为 onclick="要运行的客户端 java 脚本代码"

换句话说,对于 HTML 按钮,您需要:

a) 选择控制的一个很好的理由 - 不仅仅是随机向墙上扔泥巴,并希望在机翼上祈祷按钮起作用。

b) 您希望单击按钮运行 JavaScript(客户端浏览器端代码)以运行 onclick="我的 java 脚本函数在这里"。

所以,一点都不清楚为什么要在此处拖放 HTML 按钮?

所以,对于一个 HTML 按钮,你可以这样:

        <input id="Button2" type="button" value="button"
            onclick="myclientcode()"
            
            />

        <script>
            function myclientcode() {
                alert("This is client side click")
            }
        </script>

但是,如果您想要隐藏代码和服务器端事件,请拖放一个 asp.net 按钮,然后简单地双击该按钮以创建代码隐藏事件。

例如:

你也可以在查看标记的同时这样做,像这样说:

如果你喜欢世界贫困,我想第三种方法是手动输入标记,但话又说回来,我不希望你因为必须手动输入这些东西而饿死。您可以(并且肯定会)在拖放该按钮或控件后经常调整生成的标记,并且经常会说将 button1 更改为一个不错的名称,如 cmdEdit 等。

但是,就我的第一点而言?不,您不想更改 form1 的默认表单 id 标记。 (一个很好的理由是你非常罕见地必须在代码中使用那个 form1“id”,并且由于 99% 的时间你永远不会在代码中使用 form id 标签,所以你不需要更改 form id 标签.

但是,对于控件?为什么你当然会经常在代码后面使用这些控件和按钮,因此你经常并且应该根据自己的喜好更改这些控件的 ID 是有道理的。

所以请记住;

 for HTML button, onclick="run client side java script code"
 for asp.net button, onclick="run server side code behind"
© www.soinside.com 2019 - 2024. All rights reserved.