Search.ascx.cs代码:using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Web.Configuration;public partial class Search : System.Web.UI.UserControl
{
    private string labelText;                //提示用户要输入什么样的查询条件
    private string connectionString;         //链接数据库
    private GridView resultGridView;         //要填充的GridView控件
    private string tableName;                //要查询数据库中的数据表名
    private string columnCondition;          //根据哪一列进行查询
    private string errorMessage;             //错误信息
    /// <summary>
    /// 公开的属性,由程序员设置提示用户输入的文字
    /// </summary>
    public string LabelText 
    {
        set 
        {
            this.labelText = value;
        }
        get 
        {
            return this.labelText;
        }
    }
    /// <summary>
    /// 公开的属性,由程序员设置链接数据库的字符串
    /// </summary>
    public string ConnectionString
    {
        set
        {
            this.connectionString = value;
        }
        get
        {
            return this.connectionString;
        }
    }
    /// <summary>
    /// 公开的属性,由程序员设置要填充的GridView
    /// </summary>
    public GridView ResultGridView
    {
        set
        {
            resultGridView = value;
        }
        get
        {
            return this.resultGridView;
        }
    }
    /// <summary>
    /// 公开的属性,由程序员设置要访问的数据库中的数据表名
    /// </summary>
    public string TableName
    {
        set
        {
            this.tableName = value;
        }
        get
        {
            return this.tableName;
        }
    }
    /// <summary>
    /// 公开的属性,由程序员设置根据哪一列进行查询
    /// </summary>
    public string ColumnCondition
    {
        set
        {
            this.columnCondition = value;
        }
        get
        {
            return this.columnCondition;
        }
    }
    /// <summary>
    /// 搜索结果
    /// </summary>
    private DataTable SearchResult() 
    {
        try 
        {
            string connectionString = WebConfigurationManager.ConnectionStrings["Pubs"].ConnectionString;
            SqlConnection conn = new SqlConnection(connectionString);//定义SQL连接
            string sqlString = "select*from" + tableName + "where" + columnCondition + "like'%" + this.Condition.Text.ToString() + "%'";
            conn.Open();
            SqlDataAdapter ada = new SqlDataAdapter(sqlString, conn);
            DataTable dataTable = new DataTable();
            ada.Fill(dataTable);
            conn.Close();
            return dataTable;
        }
        catch(Exception e)
        {
            //errorMessage=e.Message;
            errorMessage = "查询失败,请重新查询。";
            return null;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        this.ColumnName.Text = this.labelText;//设置lable控件的显示文本,提示用户要输入的查询条件
    }
    protected void ButSearch_Click(object sender, EventArgs e)
    {
        //把查询的数据填充到GridView控件中
        resultGridView.DataSource = SearchResult().DefaultView;
        resultGridView.DataBind();
    }
}Search.ascx代码:<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Search.ascx.cs" Inherits="Search" %>
<table cellpadding="0" cellspacing="0">
    <tr>
        <td>
            <asp:Label ID="ColumnName" runat="server" Text="姓名:"></asp:Label>
        </td>
        <td>
            <asp:TextBox ID="Condition" runat="server" Width="300px"></asp:TextBox>
        </td>
        <td>
            &nbsp;&nbsp;
            <asp:Button ID="ButSearch" runat="server" onclick="ButSearch_Click" Text="搜索" />
        </td>
    </tr>
</table>我调用这个控件时 点击“搜索”按钮会提示我未将对象引用设置到对象的实例。
行 123:    {
行 124:        //把查询的数据填充到GridView控件中
行 125:        resultGridView.DataSource = SearchResult().DefaultView;
行 126:        resultGridView.DataBind();
行 127:    }这个怎么解决?会是哪里的错误?

解决方案 »

  1.   

    catch(Exception e) 
            { 
                //errorMessage=e.Message; 
                errorMessage = "查询失败,请重新查询。"; 
                return null; 
            } 查询失败return null
      

  2.   

    select*from" + tableName + "where" + columnCondition + "like'%" + this.Condition.Text.ToString() + "%'"
    这里很多地方错了,缺很多格。自己检查