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

16/09/2013

0

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
Bruno

Bruno

Responder

Posts

16/09/2013

Joel Rodrigues

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

16/09/2013

Bruno

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?
Responder

16/09/2013

Joel Rodrigues

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.
Responder

17/09/2013

Bruno

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:

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!
Responder

17/09/2013

Joel Rodrigues

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

17/09/2013

Bruno

Desculpe, acabei esquecendo de reportar o erro.

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

17/09/2013

Bruno

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)?

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();
            }
        }
Responder

17/09/2013

Joel Rodrigues

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

18/09/2013

Bruno

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?
Responder

18/09/2013

Joel Rodrigues

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.
Responder

20/09/2013

Bruno

Tópico concluído também.
Responder

20/09/2013

Joel Rodrigues

Obrigado pelo feedback. Tópico concluído.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar