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 连接到您的数据库,可以显示更多代码吗? 看起来像一个 WebFormsSqlDataSource
。您应该能够在查询中使用控制参数。
【参考方案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 子句的 Linq 查询作为 dataTable 上的变量
C# LINQ 与两个不同数据集上的条件 where 子句连接