Я использую два текстовых поля для поиска по номеру телефона или фамилии. Я хочу иметь возможность поиска, используя либо текстовое поле, либо оба. Я проверил мою хранимую процедуру, и она отлично работает. Когда я запускаю приложение, при нажатии кнопки «Поиск» ничего не происходит. Я не получаю ошибку ни в Visual Studio, ни в веб-приложении. Просто нет ответа вообще. Существует сетка, которая должна быть заполнена результатами хранимой процедуры. Вот мой код. У меня это работало раньше, и я в полном недоумении, почему оно внезапно перестало работать ..
<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