I have a simple ASP.NET web app with a master and default page. I'm retrieving a row from the database using a stored procedure and ADO.net and binding it to a gridview but getting "Object reference not set to an instance of an object".
It's failing here: gvCategoryLevel1Names.DataSource = rdr;
Note: 1.) The 1st image, it states the gridview is null. Why?
2.) The last image. My gridview does not appear in the form in design mode. I believe it should.
Any ideas?
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Part145._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div>
<h1>Implementing an autocomplete textbox in asp.net web forms.</h1>
<h2>I am using a .asmx web service.</h2>
</div>
<br />
<asp:FormView ID="FormView1" runat="server">
<ItemTemplate>
<div style="font-family:Arial">
<asp:TextBox ID="txtCategoryLevel1Name" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<br />
<asp:GridView ID="gvCategoryLevel1Names" runat="server" AutoGenerateColumns="False" GridLines="Both" CellPadding="10" Width="500" BorderColor="#efeeef" BorderWidth="33">
<Columns>
<asp:BoundField DataField="ID" HeaderText=" ID" />
<asp:BoundField DataField="CategoryId" HeaderText=" Category Id" />
<asp:BoundField DataField="Name" HeaderText=" Name " />
</Columns>
</asp:GridView>
</div>
</ItemTemplate>
</asp:FormView>
<script type="text/javascript">
$(function () {
$('#<%=txtCategoryLevel1Name%>').autocomplete({
source: function (request, response) {
$.ajax({
url: "CategoryLevel1Service.asmx/GetCategoryLevel1Names",
data: "{ 'searchTerm': '" + request.term + "' }",
type: "POST",
dataType: "json",
contentType: "application/json;charset=utf-8",
success: function (data)
{
response(data.d);
},
error: function (result)
{
alert('There is a problem processing your request.');
}
});
},
minLength: 0
});
});
</script>
</asp:Content>
using System;
using System.Web.UI;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace Part145
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetGetCategoryLevel1("Luxury");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
GetGetCategoryLevel1(txtCategoryLevel1Name.Text);
}
private void GetGetCategoryLevel1(string name)
{
string cs = ConfigurationManager.ConnectionStrings["MediaTreeview"].ConnectionString;
using (SqlConnection con = new SqlConnection(cs))
{
SqlCommand cmd = new SqlCommand("dbo.Part145SelectCategoryLevel1", con);
cmd.Parameters.Clear();
cmd.CommandType = CommandType.StoredProcedure;
if (!string.IsNullOrEmpty(name))
{
SqlParameter parameter = new SqlParameter("@Name", name);
cmd.Parameters.Add(parameter);
}
try
{
// Open the connection.
con.Open();
// Set the reader.
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows == true)
{
// Bind to the gridview.
gvCategoryLevel1Names.DataSource = rdr;
gvCategoryLevel1Names.DataBind();
}
}
catch (SqlException sqlex)
{
throw;
}
catch (Exception ex)
{
throw;
}
}
}
}
}