Array
(
)

Criar caixa de texto sem método messageBox do System.Windows.Form

Bruno
   - 16 set 2013

Bom dia,
É possível criar uma caixa de texto sem o método messageBox. Há outra alternativa?
O motivo é que estou usando a biblioteca System.Web.UI.WebControls e quando coloco System.Windows.Form ocorre ambiguidade.
Obrigado,
Bruno

Joel Rodrigues
   - 16 set 2013

Em projetos Web você não deve usar MessageBox. Você deve recorrer a mensagens JavaScript. Pesquise sobre a função alert.

0
|
0

Bruno
   - 16 set 2013

Agradeço pela dica Joel.

Eu pesquisei sobre a função ALERT, mas no caso de .Net para C# eu poderia estar utilizando esta mesma função?

0
|
0

Joel Rodrigues
   - 16 set 2013

Pode sim. Você pode executar um código JavaScript através do C# usando a função ScriptManager.RegisterClientScriptBlock. Dê uma pesquisada sobre ela que provavelmente vai resolver seu problema.

0
|
0

Bruno
   - 17 set 2013

Olá, bom dia!

Eu alterei o método de busca de dados no SQL Server em .Net para o que está neste código abaixo:

#Código

private void btnProcurar_Click(object sender, EventArgs e)
        {
            //define os objetos DataReader, Connection e Command
            SqlDataReader sqldr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;
            try
            {
                // Abre a conexão com o banco de dados Northwind no SQL Server 2005 Express
                // .\SQLExpress é o nome default do servidor
                // initial Catalog - indica o banco de dados
                // String usando Windows Authentication (Trusted Connection):
                string ConnectionString = "Data Source=.\SQLEXPRESS;Initial Catalog=Northwind;Integrated Security=SSPI";
                con = new SqlConnection(ConnectionString);
                con.Open();
                // define um comando para selecionar os produtos e preços da tabela products
                string CommandText = "SELECT ProductName,UnitPrice " +
                                                 "FROM Products " +
                                                 "WHERE (ProductName LIKE @criterio)";
                //associa comando a conexão
                cmd = new SqlCommand(CommandText);
                cmd.Connection = con;
                // Define o parâmetro @criterio e seu tipo de dados
                cmd.Parameters.Add(
                    new SqlParameter(
                    "@criterio",                                  // o nome do parametro
                    System.Data.SqlDbType.NVarChar, // o tipo de dado SqlDbType
                    40,                                              // o tamanho do parametro
                    "ProductName"));                          // o nome da coluna na tabela a qual se aplica
                // Preenche o valor do parâmetro com o texto informado
                // na caixa de texto : txtcriterio
                cmd.Parameters["@criterio"].Value = txtcriterio.Text+"%";
                // executa a consulta
                sqldr = cmd.ExecuteReader();
                lbDados.Items.Clear();
                // preenche o listBox com os valores retornados
                // usa o método read() para percorrer o datareader
                while (sqldr.Read())
                {
                    lbDados.Items.Add(sqldr["ProductName"].ToString() + " - "  + sqldr["UnitPrice"].ToString());
                }
            }
            catch (Exception ex)
            {
                // exibe mensagem de erro
                MessageBox.Show(ex.Message);
            }
            finally
            {
                // fecha o data reader e a conexão
                if (sqldr != null)
                    sqldr.Close();
                if (con.State == ConnectionState.Open)
                    con.Close();
            }
        }


Minha dúvida é como coloco as informações recuperadas em um DataGridView. Pois está dando erro de compilação na variável lbDados após executar a consulta.

Obrigado!

0
|
0

Joel Rodrigues
   - 17 set 2013

Qual é o erro?
(nunca deixe de dizer qual é o erro, pois "dá um erro" fica muito genérico)

0
|
0

Bruno
   - 17 set 2013

Desculpe, acabei esquecendo de reportar o erro.

Erro: The name 'lbDados' does not exist in the current context

0
|
0

Bruno
   - 17 set 2013

Consegui desenvolver a aplicação do formato que estava pensando.

O único problema agora é que a variável dataGridView1 não existe e não sei se coloco como variável local ou global. Alguém poderia me ajudar (segue o código abaixo)?

#Código

protected void Button1_Click(object sender, EventArgs e)
        {
         
            SqlDataReader sqldr = null;
            SqlConnection con = null;
            SqlCommand cmd = null;

            try
            {
                string ConnectionString = "Data Source=SIDI06;Initial Catalog=dbIntranetAdm;Integrated Security=SSPI";
                con = new SqlConnection(ConnectionString);
                con.Open();
                
                string CommandText = "SELECT * " + "FROM exp_expenses_details " + "WHERE (expense_id LIKE @criterio)";
                
                cmd = new SqlCommand(CommandText);
                cmd.Connection = con;
                
                cmd.Parameters.Add(
                    new SqlParameter(
                    "@criterio",                                 
                    System.Data.SqlDbType.NVarChar, 
                    40,                                              
                    "expense_id"));

                cmd.Parameters["@criterio"].Value = TextBox4.Text + "%";
               
                sqldr = cmd.ExecuteReader();
                //lbDados.Items.Clear();

                int nColunas = sqldr.FieldCount;

                for (int i = 0; i < nColunas; i++)
                {
                    dataGridView1.Columns.Add(sqldr.GetName(i).ToString(), sqldr.GetName(i).ToString());
                }

                
                string[] linhaDados = new string[nColunas];
                
                while (sqldr.Read())
                {
                    //lbDados.Items.Add(sqldr["expense_id"].ToString());

                    for (int a = 0; a < nColunas; a++)
                        {
                            if (sqldr.GetFieldType(a).ToString() == "System.Int32")
                            {
                                linhaDados[a] = sqldr.GetInt32(a).ToString();
                            }
                            if (sqldr.GetFieldType(a).ToString() == "System.String")
                            {
                                linhaDados[a] = sqldr.GetString(a).ToString();
                            }
                            if (sqldr.GetFieldType(a).ToString() == "System.DateTime")
                            {
                                linhaDados[a] = sqldr.GetDateTime(a).ToString();
                            } 
                        }
                        
                        dataGridView1.Rows.Add(linhaDados);                                                          
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "sua-mensagem", "alert('Informe um número a procurar')", true);
            }
            finally
            {
                
                if (sqldr != null)
                    sqldr.Close();
                if (con.State == ConnectionState.Open)
                    con.Close();
            }
        }

0
|
0

Joel Rodrigues
   - 17 set 2013

Não entendi qual é a dificuldade. Se o DataGridView não existe, coloque-o na tela para poder acessá-lo.

0
|
0

Bruno
   - 18 set 2013

Então eu coloquei na tela o componente dataGridView. O problema que na codificação (classe.cs) ele reclama de que não existe a variável dataGridView1.
Nesse caso, teria que declarar como global, certo?

0
|
0

Joel Rodrigues
   - 18 set 2013

Você não precisa declarar o DataGridView. Veja se o nome dele é realmente dataGridView1, pois como você adicionou um novo controle, o nome pode ser outro.

0
|
0

Bruno
   - 20 set 2013

Tópico concluído também.

0
|
0

Joel Rodrigues
   - 20 set 2013

Obrigado pelo feedback. Tópico concluído.

0
|
0