在Gridview c#asp.net中搜索数据

时间:2014-11-21 06:44:17

标签: c# asp.net

我是c#asp.net的新手。如何在Gridview中搜索数据?页面加载中的我的Gridview具有数据库中的所有记录。我一直在搜索它,大多数只是用空的GridView搜索。所以,是的,我的不是空的。 错误:DataSource和DataSourceID都在'GridView1'上定义。删除一个定义。

        String str = "select * from tblEmployee where (Name like '%' + @search + '%')";
        SqlCommand xp = new SqlCommand(str, objsqlconn);
        xp.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox1.Text;
        objsqlconn.Open();
        xp.ExecuteNonQuery();
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = xp;
        DataSet ds = new DataSet();
        da.Fill(ds, "Name");
        GridView1.DataSource = ds;
        GridView1.DataBind();
        objsqlconn.Close();

3 个答案:

答案 0 :(得分:1)

您无法从网格中获取数据进行搜索,您需要将数据存储在某些搜索位置。那就是在每次搜索时存储在ViewState,Session或调用DataBase中。 Bellow代码显示存储在ViewState中的数据,您可以通过使用GridViewData随时访问您的数据,您可以在其中进行搜索。 (如果您有非常大量的数据,则首选项是在每次搜索时从数据库调用数据。)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GridView1.DataSource = GridViewData;
        GridView1.DataBind();
    }
}


public DataSet GridViewData
{
    get
    {
        if (ViewState["GridViewData"] == null)
        {
            String str = "select * from tblEmployee where (Name like '%' + @search + '%')";
            SqlCommand xp = new SqlCommand(str, objsqlconn);
            xp.Parameters.Add("@search", SqlDbType.NVarChar).Value = TextBox1.Text;
            objsqlconn.Open();
            xp.ExecuteNonQuery();
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = xp;
            DataSet ds = new DataSet();
            da.Fill(ds, "Name");
            objsqlconn.Close();

            ViewState["GridViewData"] = ds;
        }

        return (DataSet)ViewState["GridViewData"];
    }
}

答案 1 :(得分:1)

@Fel ...我认为您尝试使用设计方面的sqldatasource以及代码背后的数据将数据绑定到数据网格

1)您需要选择一种绑定网格的方法 2)如果您在设计方面绑定,请从网格视图设计中删除DataSourceID属性。  像这样使用

asp:gridview id="grdData" runat="server"

而不是

asp:gridview id="grdData" runat="server" DataSourceID="Datasource1"

答案 2 :(得分:0)

请尝试此代码。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ProjectDemo_Asp.et.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Search GridView Record on Button Click By Using C#.Net in Asp.Net</title>
</head>
<body>
    <form id="form1" runat="server">
   
    Search By Title : <asp:TextBox ID="txtsearch" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" onclick="Button1_Click"
        Text="Search" />
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" EmptyDataText="There are no data records to display."
            Width="500px" BorderStyle="Solid" ShowFooter="True">
            <Columns>
                <asp:BoundField DataField="author_name" HeaderText="NAME" />
                <asp:BoundField DataField="publisher_name" HeaderText="PUB. NAME" />
                <asp:BoundField DataField="title" HeaderText="TITLE" />
                <asp:BoundField DataField="publication_year" HeaderText="PUB. YEAR" />
            </Columns>
            <HeaderStyle BackColor="#66CCFF" />
        </asp:GridView>
    </form>
</body>
</html>

现在只需查看.cs页面上的代码。

using System;
using System.Data;
using System.Data.OleDb;
namespace ProjectDemo_Asp.et
{
    public partial class Default : System.Web.UI.Page
    {
        public string connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\bookstore.mdb;Persist Security Info=False;";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DataTable _objdt = new DataTable();
                _objdt = GetDataFromDataBase("");
                if (_objdt.Rows.Count > 0)
                {
                    GridView1.DataSource = _objdt;
                    GridView1.DataBind();
                }
            }
        }

        /// 
        /// Function for binding retribing the data from database
        /// In this i have used Access DB you can use SQL DB to bind the data
         ///
        public DataTable GetDataFromDataBase(string searchtext)
        {
            DataTable _objdt = new DataTable();
            string querystring = "";
            querystring = "select * from Books";
            if (querystring != "")
            {
                querystring += " where title like '%" + txtsearch.Text + "%';";
            }
            OleDbConnection _objcon = new OleDbConnection(connectionstring);
            OleDbDataAdapter _objda = new OleDbDataAdapter(querystring, _objcon);
            _objcon.Open();
            _objda.Fill(_objdt);
            return _objdt;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            DataTable _objdt = new DataTable();
            _objdt = GetDataFromDataBase(txtsearch.Text);
            if (_objdt.Rows.Count > 0)
            {
                GridView1.DataSource = _objdt;
                GridView1.DataBind();
            }
        }
    }
}