Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DataGridView在C中搜索和筛选数据#_C#_Asp.net_Search_Gridview_Datagridview - Fatal编程技术网

C# DataGridView在C中搜索和筛选数据#

C# DataGridView在C中搜索和筛选数据#,c#,asp.net,search,gridview,datagridview,C#,Asp.net,Search,Gridview,Datagridview,我使用这段代码从DataGridView中搜索和过滤数据,这些数据与2个表(内部联接)连接,但什么都没有发生! 代码如下: DataTable dt; protected void Page_Load(object sender, EventArgs e) { string sql = @"SELECT Invoice.[InvoiceID], Invoice.[CustomerID], Invoice.[Date], Invoice.[Amount], Invo

我使用这段代码从DataGridView中搜索和过滤数据,这些数据与2个表(内部联接)连接,但什么都没有发生! 代码如下:

DataTable dt;
    protected void Page_Load(object sender, EventArgs e)
    {
        string sql = @"SELECT Invoice.[InvoiceID], Invoice.[CustomerID], Invoice.[Date], Invoice.[Amount], Invoice.[Paid], Invoice.[Rest], Invoice.[PaymentType], Invoice.[Shipped], Customer.[CustomerID], Customer.[Name], Customer.[Tell], Customer.[Address], Customer.[Comment] FROM [Invoice] INNER JOIN [Customer] ON Invoice.[CustomerID] = Customer.[CustomerID]";
        using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RechnungConnectionString"].ConnectionString))
        using (var cmd = new SqlCommand(sql, conn))
        {
            conn.Open();
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = cmd;
            dt = new DataTable();
            sda.Fill(dt);
            cmd.ExecuteNonQuery();
            GridView1.DataSource = dt;
            GridView1.DataBind();
            conn.Close();
        }
    } 
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
            DataView DV = new DataView(dt);
            DV.RowFilter = string.Format("Name LIKE '%{0}%'", TextBox1.Text);
            GridView1.DataSource = DV;

    }
这是Asp.net格式的Textbox和Gridview:

    <asp:TextBox ID="TextBox1" runat="server" OnTextChanged="TextBox1_TextChanged"></asp:TextBox>
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="InvoiceID" CssClass="table table-striped table-bordered" AllowSorting="true">

如果有人知道如何解决这个问题,或者有更好的方法在GridView中搜索和过滤数据,请帮助我

Maziar

您的文本框更改事件正在触发,但页面加载将触发并再次加载网格。如果你把它放在调试中,你会看到你的页面加载再次激发,并重置你的网格,使其看起来像过滤器从未使用过一样

如果您有预算实施第三方网格控件,则可以添加许多过滤功能和更多现成功能。我已经有一段时间没有使用标准网格了,我的所有网站都使用了DevExpress网格

请看一看您从中获得的强大过滤功能

该产品以您将节省的小时数以及您可以为最终用户提供的一系列令人敬畏的功能为自己付费。

尝试以下方法:

SqlDataAdapter sda = new SqlDataAdapter();
DataTable dt;
SqlCommand cmd2 = new SqlCommand();

protected void Page_Load(object sender, EventArgs e)
    {
        string sql = @"SELECT Invoice.[InvoiceID], Invoice.[CustomerID], Invoice.[Date], Invoice.[Amount], Invoice.[Paid], Invoice.[Rest], Invoice.[PaymentType], Invoice.[Shipped], Customer.[CustomerID], Customer.[Name], Customer.[Tell], Customer.[Address], Customer.[Comment] FROM [Invoice] INNER JOIN [Customer] ON Invoice.[CustomerID] = Customer.[CustomerID]";
        using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RechnungConnectionString"].ConnectionString))
        using (var cmd = new SqlCommand(sql, conn))
        {
            conn.Open();
            sda.SelectCommand = cmd;
            dt = new DataTable();
            sda.Fill(dt);
            cmd.ExecuteNonQuery();
            GridView1.DataSource = dt;
            GridView1.DataBind();
            conn.Close();
        }
    } 

protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
           dt = new DataTable();

            cmd2 =
                new SqlCeCommand(string.Format(@"SELECT Invoice.[InvoiceID], Invoice.[CustomerID], Invoice.[Date], Invoice.[Amount], Invoice.[Paid], Invoice.[Rest], Invoice.[PaymentType], Invoice.[Shipped], Customer.[CustomerID], Customer.[Name], Customer.[Tell], Customer.[Address], Customer.[Comment] FROM [Invoice] INNER JOIN [Customer] ON Invoice.[CustomerID] = Customer.[CustomerID] where Name LIKE '%{0}%'", TextBox1.Text));
            try
            {
                adp1.SelectCommand = cmd2;
                adp1.Fill(dt);
GridView1.DataSource = dt;
            }
            finally
            {
                con.Close();
            }

    }

如果你还有问题,请告诉我。(Movafagh bashi)

我尝试了这个方法,但没有发生任何事情(Aggend:),代码中出现了一些小错误,比如(adp1是sda)或在TextChanged中没有连接的Sqlcommand!(Shoma-ham-hamintoor)假设你有一个连接字符串变量。但正如@SURFThru所说,您的页面加载事件可能会触发。选中它。我修复了搜索文本框,但现在的问题是,当在文本框中写入时,我必须按ENTER键,你知道有任何事件处理程序(如windows窗体中的KeyPress)在asp.net中工作吗?!我在没有页面加载的情况下尝试我的代码,在gridView中用按钮加载数据,但也不起作用!DevXPress很贵,我写这个web应用只是为了一点钱:)