我正在使用两个文本框按电话号码或姓氏进行搜索。我希望能够使用一个或两个文本框进行搜索。我已经测试了存储过程,并且工作正常。当我运行我的应用程序时,单击“搜索”按钮没有任何反应。在Visual Studio或Web应用程序中,我没有收到错误。根本没有回应。应该有一个用存储过程的结果填充的gridview。这是我的代码。我以前曾经使用过它,但我完全不知道为什么它突然停止了工作。
<div class="col-xs-6 col-xs-offset-2" style="left: 0px; top: 0px; width: 80%; height: 1717px;"> <div class="panel panel-primary"> <div class="panel-heading"> <h3>Customer Search Form</h3> </div> </div> <div class="panel-body"> <div class="form-group"> <label for="inputLastname" class="control-label col-xs-2"> LastName </label> <div class="col-xs-10"> <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox> </div> </div> <div class="form-group"> <label for="inputPhoneNumber" class="control-label col-xs-2"> PhoneNumber </label> <div class="col-xs-10"> <asp:TextBox ID="txtPhoneNumber" runat="server"></asp:TextBox> </div> </div> <div class="form-group"> <div class="col-xs-10 col-xs-offset-2" style="left: -1px; top: 18px; width: 29%"> <asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="btn btn-primary" OnClick="btnSearch_Click" /> <asp:Button ID="btnClear" runat="server" Text="Clear" CssClass="btn btn-primary" OnClick="btnClear_Click" /> </div> <br /> <br /> </div> </div> <br /> <br /> <div class="panel panel-primary"> <div class="panel-heading"> <h3>Search Results</h3> </div> <div class="panel-body" align="center"> <div class="col-xs-6" style="left: 0px; top: 0px; width: 93%; height: 98px"> <br /> <asp:GridView ID="gvSearchResults" runat="server" AutoGenerateColumns="False" DataKeyNames="customer_id" Height="66px"> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="customer_id" HeaderText="customer_id" InsertVisible="False" ReadOnly="True" SortExpression="customer_id" /> <asp:BoundField DataField="Company" HeaderText="Company" SortExpression="Company" /> <asp:BoundField DataField="FirstName" HeaderText="FirstName" SortExpression="FirstName" /> <asp:BoundField DataField="LastName" HeaderText="LastName" SortExpression="LastName" /> <asp:BoundField DataField="ShippingAddress" HeaderText="ShippingAddress" SortExpression="ShippingAddress" /> <asp:BoundField DataField="City" HeaderText="City" SortExpression="City" /> <asp:BoundField DataField="State" HeaderText="State" SortExpression="State" /> <asp:BoundField DataField="ZipCode" HeaderText="ZipCode" SortExpression="ZipCode" /> <asp:BoundField DataField="EmailAddress" HeaderText="EmailAddress" SortExpression="EmailAddress" /> <asp:BoundField DataField="PhoneNumber" HeaderText="PhoneNumber" SortExpression="PhoneNumber" /> </Columns> </asp:GridView> </div> </div> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HMTechConnectionString %>" SelectCommand="spSearchCustomers" SelectCommandType="StoredProcedure"> <SelectParameters> <asp:ControlParameter ControlID="txtLastName" Name="LastName" PropertyName="Text" Type="String" /> <asp:ControlParameter ControlID="txtPhoneNumber" Name="PhoneNumber" PropertyName="Text" Type="String" /> </SelectParameters> </asp:SqlDataSource> </div>
这是我称为Databind的代码。网格正在使用SqlDataSource。
protected void btnSearch_Click(object sender, EventArgs e) { gvSearchResults.DataSource = SqlDataSource1; gvSearchResults.DataBind(); }
我也尝试删除
<asp:ControlParameter ControlID="txtLastName" Name="LastName" PropertyName="Text" Type="String" /> <asp:ControlParameter ControlID="txtPhoneNumber" Name="PhoneNumber" PropertyName="Text" Type="String" />
并像下面这样在后面的代码中设置参数:
SqlDataSource1.SelectParameters["txtPhoneNumber"].DefaultValue = ""; SqlDataSource1.SelectParameters["txtLastName"].DefaultValue = "";
创建此错误:
object reference not set to an instance of an object
我正在使用两个文本框按电话号码或姓氏进行搜索。我希望能够使用一个或两个文本框进行搜索。我已经测试了存储过程,并且工作正常。当我运行我的...
最后使它起作用,但不能完全确定是什么改变导致了它。我在其他一些更改中添加了以下代码,因此可能是解决方法: