如何使用组合框更改 datagridview 表?

Posted

技术标签:

【中文标题】如何使用组合框更改 datagridview 表?【英文标题】:How can I change datagridview table with combobox? 【发布时间】:2020-06-01 08:13:10 【问题描述】:

我尝试使用组合框更改 datagridview 表。但我不能改变参数。如何更改数据库表?

public DataTable TableLoad()
    
        DataSet AL2020DS = new DataSet();
        SqlDataAdapter SQLDA = new SqlDataAdapter();
        SqlCommand Cmd1;
        string Sql = "SELECT * FROM @value ORDER BY [Donanım Seri No] ASC";
        Cmd1 = new SqlCommand(Sql, con);
        Cmd1.Parameters.AddWithValue("@value", cbbox_llisteler.Text);
        SQLDA.SelectCommand = Cmd1;
        DataTable AL2020DT = new DataTable();
        SQLDA.Fill(AL2020DT);
        return AL2020DT;
    

public Form1()
    
        InitializeComponent();
        dataGridView1.DataSource = TableLoad();
    

当我尝试这个参数命令时我得到这个错误:必须声明表变量“@value”

【问题讨论】:

Can we stop using AddWithValue() already? 2008 完全不受支持。这对某人来说应该很重要。 【参考方案1】:

你的@value 没有被插值。使用 string.Format() 或者如果您使用 C#6,则使用以下语法。另外,请注意我已经删除了ASC,因为这是默认设置,无需提及。

string Sql = $"SELECT * FROM value ORDER BY [Donanım Seri No]";

再次,在下面的代码行中,您尝试将表名作为参数传递,这是不可能的。您只能将查询参数作为参数传递,而不是表/列名。

所以基本上你会喜欢

    string Sql = $"SELECT * FROM cbbox_llisteler.Text ORDER BY [Donanım Seri No] ASC";
    Cmd1 = new SqlCommand(Sql, con);        
    SQLDA.SelectCommand = Cmd1;

【讨论】:

如果他需要通过 [Donanım Seri No] = @value 这样的条件怎么办。我认为 OP 正在寻求在 where 条件下传递值。 @SurajKumar 我看不到。我相信你不能在WHERE 子句中传递表名。 我在想 - Select * from tblSerialNo where [Donanım Seri No] = @value. 那么如何在没有参数的情况下更改表格? 当我尝试这段代码时,我得到了这个错误:'' 附近的语法不正确。【参考方案2】:

我找到解决办法

string Sql = "SELECT * FROM " + TextBox1.Text + " ORDER BY [Hardware Serial Number] ASC"

我在点击功能中使用了这段代码。

【讨论】:

以上是关于如何使用组合框更改 datagridview 表?的主要内容,如果未能解决你的问题,请参考以下文章

单击组合框值时 DataGridView 列标题更改

Datagridview组合框未在单击/编辑时选择

使用组合框从数据库中选择表并填充 datagridview - 无法使其工作

使用查找组合框 c# 绑定 Datagridview 多列排序

C#根据gridview组合框更改gridview列数据?

将绑定的组合框添加到 datagridview