Usuário com melhor resposta
DropDownList tem um SelectedValue que é inválido

Pergunta
-
Qual a melhor solução p/ que o DropDownList2_UF não retorne com erro por estar sem o conteúdo desejado?
Na condição do campo não ser obrigatório, deixo SelectedIndex = 0 : - Selecione opção abaixo retorna com:
Assim, retorna com: " inválido porque ele não existe na lista de itens "
DropDownList2_UF.Items.Clear()
DropDownList2_UF.DataSource = Retorno_DataSet.Tables("DSet_tb_uf")
DropDownList2_UF.DataTextField = ("UFNOME")
DropDownList2_UF.DataValueField = ("UFCOD")
DropDownList2_UF.DataBind()
DropDownList2_UF.Items.Insert(0, "- Selecione opção abaixo")
DropDownList2_UF.SelectedIndex = 0
Pensei em inserir um registro com UFNOME = - Selecione opção abaixo
e deixar o DropDownList2_UF.SelectedValue = UFCOD " Valor referente a - Selecione opção abaixo"Mas parece-me não ser uma boa prática, alguma sugestão?
Respostas
-
existe uma propriedade chamada rowsaffected talvés nela vc consiga isso, por ai desse jeito dá erro mesmo.
Junior
- Marcado como Resposta Wilson Boris segunda-feira, 27 de maio de 2013 20:04
Todas as Respostas
-
-
-
-
Public Sub alterar()
Dim altera As ClassModel3_Endereco_PJ = New ClassModel3_Endereco_PJ
Dim aRET As ArrayList = New ArrayList()
aRET = altera.altera_endereco(RadioButtonList1_Situacao.SelectedValue, RadioButtonList2_Tipo.SelectedValue, TextBox1_Logradouro.Text, TextBox2_Numero.Text, DropDownList1_Bairro_local.SelectedValue, TextBox3_Tel_fixo.Text, TextBox4_Tel_cel.Text, DropDownList2_UF.SelectedValue, DropDownList3_Mun.SelectedValue, TextBox5_Email.Text, Label1_id.Text, TextBox6_Obs.Text, DropDownList5_Pesquisa.SelectedValue)
If Convert.ToInt32(aRET(0)) >= 1 Then
Label1_retorno_CRUD.Text = (String.Format("{0} Registro alterado com sucesso.", Convert.ToString(aRET(0))))
End If
End Sub
Public Function altera_endereco(p_cod_situacao, p_cod_tipo, p_logradouro, p_numero, p_cod_bairro_localidade, p_telefone_fixo, p_telefone_celular, p_cod_uf, p_cod_mun, p_email, p_cod_pj, p_obs, p_id_cad_endereco) As ArrayList
Dim aDR As ArrayList = New ArrayList()
Dim comando As String
comando = "UPDATE tb_cad_endereco SET cod_situacao=@Par1, cod_tipo=@Par2, logradouro=@Par3, numero=@Par4, cod_bairro_localidade=@Par5, telefone_fixo=@Par6, telefone_celular=@Par7, cod_uf=@Par8, cod_mun=@Par9, email=@Par10, cod_pj=@Par11, obs=@Par12 " + _
" WHERE id_cad_endereco=@Par13 "
Dim param As ArrayList = New ArrayList()
param.Add(p_cod_situacao)
param.Add(p_cod_tipo)
param.Add(p_logradouro)
param.Add(p_numero)
param.Add(p_cod_bairro_localidade)
param.Add(p_telefone_fixo)
param.Add(p_telefone_celular)
param.Add(p_cod_uf)
param.Add(p_cod_mun)
param.Add(p_email)
param.Add(p_cod_pj)
param.Add(p_obs)
param.Add(p_id_cad_endereco)
aDR = Class2_ExecuteBD.Comando(comando, param)
Return aDR
End Function
Public Class Class2_ExecuteBD
Public Shared Function Comando(commando As String, param As ArrayList)
Dim retorno As ArrayList = New ArrayList()
Dim erro As Exception
Dim erromensagem As String = ""
Dim DT As DataTable = New DataTable()
Using CN As SqlConnection = New SqlConnection()
Try
CN.ConnectionString = My.Settings.cn1
Dim com As SqlCommand = New SqlCommand()
com.CommandText = commando
com.CommandType = CommandType.Text
Dim c As Integer
For Each item In param
c += 1
com.Parameters.Add(String.Format("@Par{0}", c), ClassData2_Banco.GetDBType(item.GetType())).Value = item
Next
com.Connection = CN
CN.Open()
Dim qtd As Integer = com.ExecuteNonQuery()
retorno.Add(qtd)
CN.Close()
Return retorno
Catch ex As InvalidCastException
erro = ex
erromensagem = "Erro de conversão de dados"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As SqlException
erro = ex
erromensagem = "Erro ao acessar o Banco de Dados"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As AccessViolationException
erro = ex
erromensagem = "Erro de Violação de acesso a BD"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
Catch ex As Exception
erro = ex
erromensagem = "Erro Generico não esperado"
retorno.Add(0)
retorno.Add(erro)
retorno.Add(erromensagem)
End Try
End Using
Return retorno
End Function -
-
Junior,
o meu propósito foi de ter o "qtd" com Integer na linha: Dim qtd As Integer = com.ExecuteNonQuery(),
pois espero do ArrayList que me informe quantos registros foram afetados, no caso pelo UPDATE, mas poderia ser um DELETE ou INSERT.
-
Junior,
o meu propósito foi de ter o "qtd" com Integer na linha: Dim qtd As Integer = com.ExecuteNonQuery(),
pois espero do ArrayList que me informe quantos registros foram afetados, no caso pelo UPDATE, mas poderia ser um DELETE ou INSERT.
complementando o código:
Imports System.Data
Imports System.Data.Common
Imports System.Data.SqlClient
Imports System.Text
Imports System.Collections.Generic
Imports System.Linq
Public Class ClassData2_Banco
Public Function AbreConexao() As DbConnection
Dim factory As DbProviderFactory = DbProviderFactories.GetFactory("System.Data.SqlClient")
Dim conexao As DbConnection = factory.CreateConnection()
Dim builder As DbConnectionStringBuilder = factory.CreateConnectionStringBuilder()
Dim strCnn As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
strCnn.DataSource = "PC"
strCnn.InitialCatalog = "SIS_SQL"
strCnn.IntegratedSecurity = True
strCnn.MinPoolSize = 2
strCnn.MaxPoolSize = 100
builder.ConnectionString = strCnn.ConnectionString
conexao.ConnectionString = builder.ConnectionString
Return conexao
End Function
Public Shared Function GetDBType(theType As System.Type) As SqlDbType
Dim param As SqlParameter = New SqlParameter()
If theType.Name = "String" Then
param.SqlDbType = SqlDbType.VarChar
End If
If theType.Name = "Int" Or theType.Name = "Int16" Or theType.Name = "Int32" Then
param.SqlDbType = SqlDbType.Int
End If
If theType.Name = "DateTime" Then
param.SqlDbType = SqlDbType.Date
End If
If theType.Name = "boll" Then
param.SqlDbType = SqlDbType.Bit
End If
Return param.SqlDbType
End Function
End Class -
existe uma propriedade chamada rowsaffected talvés nela vc consiga isso, por ai desse jeito dá erro mesmo.
Junior
- Marcado como Resposta Wilson Boris segunda-feira, 27 de maio de 2013 20:04
-