C# Datagrid 的 WHERE 子句的文本框

Posted

技术标签:

【中文标题】C# Datagrid 的 WHERE 子句的文本框【英文标题】:Textbox for WHERE clause for C# Datagrid 【发布时间】:2012-06-20 21:17:24 【问题描述】:

(VS 2010 C# 网站)我有 TextBox1 来过滤 SQL 数据库中的 FirstNames,该数据库将显示在 Datagrid 中,但我无法找出将用户输入从“TextBox1.Text”链接到的正确方法Datagrid 过滤的 WHERE 子句。我试过了:

SelectCommand="SELECT * FROM [TestName] WHERE ([TestFirstName] LIKE '%' + TextBox1.Text + '%')"

【问题讨论】:

SQL 不是 dbms,你的意思是 MS SQL-Server 吗? “还是错了” 是什么意思?你有例外吗?这是 ASP.NT 还是 Winforms?您是否使用 ADO.NET 连接到您的数据库,可以显示更多代码吗? 看起来像一个 WebForms SqlDataSource。您应该能够在查询中使用控制参数。 【参考方案1】:

试试这个:

SelectCommand="SELECT * FROM [TestName] WHERE ([TestFirstName] LIKE '%" + TextBox1.Text + "%')" 

注意 + TextBox1.Text + 周围的引号。您上面的示例似乎正在寻找文字字符串 TextBox1.Text,而不是 TextBox1.Text 的实际值。

【讨论】:

TextBox1.Text = "*; 删除表用户;" - 最好使用参数:)【参考方案2】:
SelectCommand = "SELECT * FROM [TestName] WHERE ([TestFirstName] LIKE '% " + TextBox1.Text + "%')";

【讨论】:

【参考方案3】:

如果您使用 SqlDataSource 或 ObjectDataSource 将数据绑定到数据网格,则可以简单地将 WHERE 子句放入正在使用的数据源的“FilterExpression”属性中。

protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
        
            string filterstr = "";

            if (this.tbSearchEmpID.Text.Trim() != String.Empty)
            
                filterstr += "EmpId LIKE '%" + this.tbSearchEmpID.Text.Trim() + "%'";
            

            this.ObjectDataSource1.FilterExpression = filterstr;
        

【讨论】:

【参考方案4】:
SelectCommand="SELECT * FROM [TestName] WHERE ([TestFirstName] LIKE '%' + @TestFirstName2 + '%')">
    <SelectParameters>
        <asp:ControlParameter ControlID="TextBox1" Name="TestFirstName2" 
            PropertyName="Text" Type="String" />
    </SelectParameters>

【讨论】:

以上是关于C# Datagrid 的 WHERE 子句的文本框的主要内容,如果未能解决你的问题,请参考以下文章

在 c# where in 子句适用于整数?

C# 使用带有 where 子句的 Linq 查询作为 dataTable 上的变量

Java 等效于 C# Linq 中的 Where 子句

C# LINQ 与两个不同数据集上的条件 where 子句连接

C# LINQ 详解 From Where Select Group Into OrderBy Let Join

如何在 WHERE 子句中使用混合文本和日期字段?