Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/05/2006, 15:23
Emerald
 
Fecha de Ingreso: mayo-2006
Mensajes: 243
Antigüedad: 18 años, 10 meses
Puntos: 0
Problema con DataGrid

Hola!

En un form tengo por un lado: dos dropdownlist y un boton de buscar y por otro lado tengo un textbox y un boton de buscar

lo que quiero hacer es que el usuario tenga dos opciones de busqueda, una pasando como parametros los valores del selectvalue de los dropdownlist o bien hacer una busqueda por palabra clave según lo que el usuario capture en el textbox.

Tengo un solo storedprocedure para estas dos opciones de búqueda.

los parametros que debo pasar son:
En caso de hacer la busqueda seleccionando un valor de los dropdownlist:
@Ramo = this.ddlRamo.SelectedValue
@Categoria = this.ddlCategoria.SelectedValue
@vTipo= 1 (Se refiere al tipo de busqueda por seleccion de combos)
@txtPalabraClave = this.txtPClave.Text (Aunque aqui no tiene nada)

En caso de hacer la busqueda por palabra clave:
@Ramo = ""
@Categoria = ""
@vTipo = 2 (Se refiere al tipo de busqueda por palabra clave)
@txtPalabraClave = this.txtPClave.Text

y hago la busqueda en el stored de la siguiente manera:

Código:
             @RamoId 	int,
	@CategoriaId	int,
	@Tipo		int,
	@PClave	varchar(255)


AS
	IF @Tipo = 1
		select * from empresas
		where ramoId = @RamoId
		and categoriaId = @CategoriaId
		order by Empresa
	
	IF @Tipo = 2
		select * from empresas
		where Empresa like '%'+ @PClave +'%' 
		or Descripcion like '%'+ @PClave +'%'
		order by Empresa
Lo extraño es que la busqueda por palabra clave no me funciona, me manda el siguiente error:
Input string was not in a correct format

Este error lo marca solamente cuando primero quiero buscar por palabra clave.

Pero si primero realizo una busqueda seleccionando algo de los combos y despues hago una busqueda por palabra clave, entonces si me muestra bien el resultado...

Este es mi codigo:

Código:
private void btnBuscar_Click(object sender, System.EventArgs e)
		{
			string strConexion = this._appconfig.GetConfig("Conexiones","ContenidoPrueba");
			string vRamo = this.ddlRamo.SelectedValue;
			string vCategoria = this.ddlCategoria.SelectedValue;
			int vTipo = 1;
			string PClave = this.txtPClave.Text;
			
			FillDataGrid(strConexion, vRamo, vCategoria, vTipo, PClave);
		}
		private void FillDataGrid(string strConexion, string vRamo, string vCategoria, int vTipo, string PClave)
		{						
			// Creamos la conexión
			sqlConexion	= new SqlConnection(strConexion);
			sqlComando = new SqlCommand("LstEmpresas", sqlConexion);
			sqlComando.CommandType = CommandType.StoredProcedure; 
			sqlComando.Parameters.Add (new SqlParameter("@Tipo",SqlDbType.Int,4));
			sqlComando.Parameters.Add (new SqlParameter("@PClave",SqlDbType.VarChar,255));
			sqlComando.Parameters.Add (new SqlParameter("@RamoId",SqlDbType.Int,4));
			sqlComando.Parameters.Add (new SqlParameter("@CategoriaId",SqlDbType.Int,4));
			sqlComando.Parameters["@RamoId"].Value = vRamo;
			sqlComando.Parameters["@CategoriaId"].Value = vCategoria;
			sqlComando.Parameters["@Tipo"].Value = vTipo;
			sqlComando.Parameters["@PClave"].Value = PClave;
			sqlConexion.Open();
			SqlDataAdapter da = new SqlDataAdapter(sqlComando);
			//Llenar el Dataset
			DataSet ds = new DataSet();
			da.Fill(ds, "Empresa");
			//Ligar el datagrid con la fuente de datos
			dgEmpresas.DataSource = ds;
			dgEmpresas.DataMember = "Empresa";
			dgEmpresas.DataBind();
			sqlComando.Dispose();
			sqlConexion.Close();    // Close Connection
			sqlConexion.Dispose();  
		}

		private void btnBuscarPC_Click(object sender, System.EventArgs e)
		{
			string strConexion = this._appconfig.GetConfig("Conexiones","ContenidoPrueba");
			string vRamo = "";
			string vCategoria = "";
			int vTipo = 2;
			string PClave = this.txtPClave.Text;
			
			FillDataGrid(strConexion, vRamo, vCategoria, vTipo, PClave);
		}

	}
Alguna idea de que es lo que esté pasando???