Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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# 在C SqlServer中使用组合框和文本框进行筛选_C#_Sql Server_Desktop Application - Fatal编程技术网

C# 在C SqlServer中使用组合框和文本框进行筛选

C# 在C SqlServer中使用组合框和文本框进行筛选,c#,sql-server,desktop-application,C#,Sql Server,Desktop Application,我必须用文本视图和组合框过滤datagrid的数据。但是,会发生以下情况:组合初始化为0,因此它不会捕获第一项的值。尝试手动添加项目,以便选择值0,其他值来自数据库 错误: System.ArgumentException:'无法修改项目集合 设置数据源属性时。” 在以下方法中,我尝试制定sql查询,以获取参数combobox和textbox,并在datagrid中执行筛选: private void filtrarTituloYAEMP(int valor) { cmbTipoPago.

我必须用文本视图和组合框过滤datagrid的数据。但是,会发生以下情况:组合初始化为0,因此它不会捕获第一项的值。尝试手动添加项目,以便选择值0,其他值来自数据库

错误:

System.ArgumentException:'无法修改项目集合 设置数据源属性时。”

在以下方法中,我尝试制定sql查询,以获取参数combobox和textbox,并在datagrid中执行筛选:

private void filtrarTituloYAEMP(int valor)
{
   cmbTipoPago.Items.Add("Seleccione");
   if (txtTitulo.Text == null || txtTitulo.Text == "")
   {
       try
       {
          llenaTitulo();
       }
       catch (SqlException ex)
       {
                MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
       }
   }
   else
   {
       try
       {
            SqlConnection conexion = new SqlConnection();
            conexion.ConnectionString = "acá mi conexión a la bd";
            conexion.Open();
            DataSet ds = new DataSet();
            string sSQL = "SELECT titulo FROM V_CuetaWeb, ArchivoElectronico_MedioPago where titulo LIKE @valor + '%' and AEMP_Id = @id";
            SqlCommand command = new SqlCommand(sSQL, conexion);
            command.Parameters.Add("@valor", SqlDbType.VarChar).Value = valor;
            command.Parameters.Add("@id", SqlDbType.Int).Value = Convert.ToInt32(cmbTipoPago.SelectedValue);
            SqlDataAdapter da = new SqlDataAdapter(command);
            da.Fill(ds, "V_CuetaWeb");
            conexion.Close();
            dtgTitulo.DataSource = ds;
            dtgTitulo.DataMember = "V_CuetaWeb";
        }
        catch (SqlException exx)
        {
            MessageBox.Show("Error: " + exx.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}
显然,它不是那样工作的。因此,问题是:

1-组合框有一个额外的选项“选择”,该选项的值为0

2-方法使用文本框和组合框进行筛选


有人知道如何修复这些细节吗?

实现这一点的最简单方法可能是从以下位置修改Select语句:

    string sSQL = "SELECT titulo FROM V_CuetaWeb, ArchivoElectronico_MedioPago where titulo LIKE @valor + '%' and AEMP_Id = @id";

在DataAdapter运行并填充查询后,您还可以将位置0处的新DataRow插入到结果DataTable中

ds.Tables[0].Rows.InsertAt(new DataRow("Seleccione"]),0);

要实现此功能,最简单的方法可能是从以下位置修改Select语句:

    string sSQL = "SELECT titulo FROM V_CuetaWeb, ArchivoElectronico_MedioPago where titulo LIKE @valor + '%' and AEMP_Id = @id";

在DataAdapter运行并填充查询后,您还可以将位置0处的新DataRow插入到结果DataTable中

ds.Tables[0].Rows.InsertAt(new DataRow("Seleccione"]),0);

正如错误消息所解释的,当设置DataSource属性时,您无法添加到Items集合。相反,从数据集中获取表并将该行直接添加到表中。另外,您应该真正开始使用sql中的联接语法,忘记表达表之间关系的旧方法:如设置DataSource属性时无法添加到Items集合的错误消息所解释的。相反,从数据集中获取表并将该行直接添加到表中。此外,您还应该真正开始使用sql中的联接语法,忘记表达表之间关系的旧方法:行:ds.tables[0].Rows.insertanew DataRowSeleccione,0;它对我不起作用错误:datarow不包含接受1个参数的构造函数行:ds.Tables[0].Rows.InsertAtnew DataRowSeleccione,0;它对我不起作用错误:datarow不包含接受1个参数的构造函数