Menino Posted July 29, 2013 at 10:14 AM Report #520273 Posted July 29, 2013 at 10:14 AM Bom dia, pessoal Estou a tentar comparar um numero escolhido de uma comboBox com os que existem numa lista mas no if do compare tenho este erro Cannot implicitly convert type int to bool, alguem me pode ajudar. protected void RadComboBox1_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e) { if (string.IsNullOrEmpty(RadComboBox1.SelectedValue)) { rcbParkingTime.ClearSelection(); rcbParkingTime.Text = string.Empty; } else { if (Int32.Parse(rcbParkingCompany.SelectedItem.Value) == 11) { rcbParkingTime.DataSource = PaySimplexWebLayers.Business.ParkingBLL.ListCSCParkingTimes(new DCParkingTimesIN() { ParcometerId = Int32.Parse(RadComboBox1.SelectedValue) }); DCGetCSCParcometerOUT[] parques = ParkingBLL.service.GetOeirasParcoMeters(); foreach (DCGetCSCParcometerOUT parquimetros in parques){ if(rcbParkingTime.Text.CompareTo(parquimetros)) { System.Console.WriteLine("O parquimetro: " + parquimetros + " não existe."); } } Obrigado 🙂
nelsonr Posted July 29, 2013 at 11:27 AM Report #520288 Posted July 29, 2013 at 11:27 AM (edited) O .CompareTo retorna um numero. Se queres saber se é igual, experimenta if(rcbParkingTime.Text.CompareTo(parquimetros)==0) Já agora, o parquimetros tem o override do ToString para retornar uma string? (já que estás a comparar com um texto) Edited July 29, 2013 at 11:29 AM by nelsonr
Menino Posted July 29, 2013 at 11:29 AM Author Report #520289 Posted July 29, 2013 at 11:29 AM Eu experimentei essa solução mas apareceu este erro: Input string was not in a correct format.
nelsonr Posted July 29, 2013 at 11:44 AM Report #520290 Posted July 29, 2013 at 11:44 AM Qual o conteúdo do parquimetros? Tem algum campo do nome que devia ser usado para comparar? (parquimetro.Nome ou do tipo) A class DCGetCSCParcometerOUT tem o override do ToString? Se não tiver. o CompareTo está a comparar com o objecto, e não com o nome do parquimetro
Menino Posted July 29, 2013 at 11:48 AM Author Report #520292 Posted July 29, 2013 at 11:48 AM O DCGetCSCParcometerOut tem public partial class DCGetCSCParcometerOUT : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { [system.NonSerializedAttribute()] private System.Runtime.Serialization.ExtensionDataObject extensionDataField; [system.Runtime.Serialization.OptionalFieldAttribute()] private string AddressField; [system.Runtime.Serialization.OptionalFieldAttribute()] private string CodeField; [system.Runtime.Serialization.OptionalFieldAttribute()] private int IDField; [system.Runtime.Serialization.OptionalFieldAttribute()] private string LevelField; [system.Runtime.Serialization.OptionalFieldAttribute()] private string SubZoneField; [system.Runtime.Serialization.OptionalFieldAttribute()] private string ZoneField; [system.Runtime.Serialization.OptionalFieldAttribute()] private string[] getCSCParcometerErrorsListField;
nelsonr Posted July 29, 2013 at 11:55 AM Report #520293 Posted July 29, 2013 at 11:55 AM E com qual desses campos queres comparar o rcbParkingTime.Text ?
Menino Posted July 29, 2013 at 11:56 AM Author Report #520294 Posted July 29, 2013 at 11:56 AM Com o IDField. Obrigado
bioshock Posted July 29, 2013 at 01:30 PM Report #520307 Posted July 29, 2013 at 01:30 PM int valor = int.TryParse(rcbParkingTime.Text, out valor); E a partir daqui fazes a comparação do 'valor' com outra variável do mesmo tipo de dados.
nelsonr Posted July 29, 2013 at 01:30 PM Report #520308 Posted July 29, 2013 at 01:30 PM (edited) Então tens várias hipoteses (não testado): Colocar o IDField como publico [system.Runtime.Serialization.OptionalFieldAttribute()] public int IDField; e usar if(Convert.ToInt32(rcbParkingTime.Text)==parquimetros.IDField) Ou, adicionar um método publico para retornar o valor. Dentro da class DCGetCSCParcometerOUT, adicionas public int GetIDField() { return(this.IDField); } e usar if(Convert.ToInt32(rcbParkingTime.Text)==parquimetros.GetIDField()) Ou, adicionar o override do ToString para retornar o IDField. Dentro da class DCGetCSCParcometerOUT adicionas: public override string ToString() { return(this.IDField.ToString()); } E na comparação podes deixar como está if(rcbParkingTime.Text.CompareTo(parquimetros)==0) Edited July 29, 2013 at 01:32 PM by nelsonr
Menino Posted July 29, 2013 at 04:02 PM Author Report #520328 Posted July 29, 2013 at 04:02 PM Pessoal muito obrigado pelas ajudas, experimentei e andei aqui de volta disto e desisti da maneira que estava a fazer e fiz esta, estou é só com um problema é que quando a lista é igual ao GetType(), este retorna na mesma a mensagem Esse parquimentro não é válido :s protected void RadComboBox1_TextChanged(object sender, EventArgs e) { foreach (RadComboBoxItem lista in RadComboBox1.Items) { if(lista.Equals(RadComboBox1.GetType())) { lblStatus.Text = ""; } else { lblStatus.Text = "Esse parquímetro não é valido."; } } } Obrigado pelas ajudas mais uma vez
nelsonr Posted July 29, 2013 at 04:32 PM Report #520332 Posted July 29, 2013 at 04:32 PM Não faço ideia o que pretendes com isso do GetType...
Menino Posted July 29, 2013 at 04:36 PM Author Report #520333 Posted July 29, 2013 at 04:36 PM O que tenho é uma RadComboBox e quero ir buscar os items que esta tem inserida e o item que o utilizador escrever e comparar, se existir prossegue se não este diz Esse parquimetro não é válido. Já alterei essa parte e tenho if(lista.Equals(RadComboBox1.IsEmpty)) { ....
brunobola Posted September 7, 2013 at 11:23 AM Report #523754 Posted September 7, 2013 at 11:23 AM Não percebo a tua comparação: if(lista.Equals(RadComboBox1.GetType())) Não podes comparar ojectos com tipos, se quiseres tems de fazer typeof(lista).Equals(RadComboBox1.GetType()) Mas não percebo a lógica tb...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now