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ódigoprivate 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ódigoprotected 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