Problema com DataGridViewComboBoxColumn
Pessoal, boa tarde.
Estou com alguns probleminhas, se alguém puder me ajudar, agradeço imensamente!
Tenho uma aplicação windows form em c# que tem um DataGridView, neste DataGridView tenho 2 colunas que são DataGridViewComboBoxColumn.
O que eu espero que aconteça? Quando selecionado o valor de um, jogar o "Value" na coluna anterior. Enfim, Tentei com o código abaixo, porém, estou com alguns problemas:
1 - Só consigo selecionar um item do grid, clicando 2 x no mesmo, a primeira vez que eu clico, não abre a lista de seleção, somente na segunda vez.
2 - As vezes, retorna o valor "System.Data.DataRowView" na coluna anterior.
3 - Os combos, coincidentemente, serão carregados com o mesmo valor, mas caso não fossem, como eu deveria fazer?
4 - Existe uma forma de eu adicionar um item manualmente, por exemplo, como estão trazendo uma lista do banco de dados, supondo que eu traga "Santos", "São vicente", "Guarujá" e queira que o primeiro item seja "<selecione>", que não faz parte do banco de dados, não está no meu DataTable, como faço neste caso?
Obrigada, pessoal...
public FrmAlterarTipoAcomodacao()
{
InitializeComponent();
}
TipoAcomodacao tipoAcomodacao = new TipoAcomodacao();
public void CarregarTipoAcomodacao()
{
DataTable dtbTipoAcomodacao = tipoAcomodacao.ListarTipoAcomodacao();
col1TipoAcomodacao.ValueMember = "TIS_TAC_CD_TIPO_ACOMODACAO";
col1TipoAcomodacao.DisplayMember = "TIS_TAC_DS_TIPO_ACOMODACAO";
col1TipoAcomodacao.DataSource = dtbTipoAcomodacao;
col1TipoAcomodacaoAutorizada.ValueMember = "TIS_TAC_CD_TIPO_ACOMODACAO";
col1TipoAcomodacaoAutorizada.DisplayMember = "TIS_TAC_DS_TIPO_ACOMODACAO";
col1TipoAcomodacaoAutorizada.DataSource = dtbTipoAcomodacao;
}
private void FrmAlterarTipoAcomodacao_Load(object sender, EventArgs e)
{
dgvProfissional.Rows.Add();
dgvProfissional.Rows.Add();
dgvProfissional.Rows.Add();
dgvProfissional.Rows.Add();
CarregarTipoAcomodacao();
dgvProfissional.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgvProfissional_EditingControlShowing);
}
public FrmAlterarTipoAcomodacao()
{
InitializeComponent();
}
TipoAcomodacao tipoAcomodacao = new TipoAcomodacao();
public void CarregarTipoAcomodacao()
{
DataTable dtbTipoAcomodacao = tipoAcomodacao.ListarTipoAcomodacao();
col1TipoAcomodacao.ValueMember = "TIS_TAC_CD_TIPO_ACOMODACAO";
col1TipoAcomodacao.DisplayMember = "TIS_TAC_DS_TIPO_ACOMODACAO";
col1TipoAcomodacao.DataSource = dtbTipoAcomodacao;
col1TipoAcomodacaoAutorizada.ValueMember = "TIS_TAC_CD_TIPO_ACOMODACAO";
col1TipoAcomodacaoAutorizada.DisplayMember = "TIS_TAC_DS_TIPO_ACOMODACAO";
col1TipoAcomodacaoAutorizada.DataSource = dtbTipoAcomodacao;
}
private void FrmAlterarTipoAcomodacao_Load(object sender, EventArgs e)
{
dgvProfissional.Rows.Add();
dgvProfissional.Rows.Add();
dgvProfissional.Rows.Add();
dgvProfissional.Rows.Add();
CarregarTipoAcomodacao();
dgvProfissional.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgvProfissional_EditingControlShowing);
}
ComboBox combo;
private void dgvProfissional_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox comboBox = e.Control as ComboBox;
if (comboBox != null)
{
comboBox.SelectedIndexChanged -= new EventHandler(combo_SelectedIndexChanged);
comboBox.SelectedIndexChanged += combo_SelectedIndexChanged;
}
}
private void combo_SelectedIndexChanged(object sender, EventArgs e)
{
if ((sender as ComboBox).SelectedIndex > 0)
{
string selected = (sender as ComboBox).SelectedValue.ToString();
if (dgvProfissional.CurrentCell.ColumnIndex == 11)
{
dgvProfissional.Rows[dgvProfissional.CurrentRow.Index].Cells["col1CodigoTipoAcomodacao"].Value = selected;
}
if (dgvProfissional.CurrentCell.ColumnIndex == 18)
{
dgvProfissional.Rows[dgvProfissional.CurrentRow.Index].Cells["col1CodigoTipoAcomodacaoAutorizada"].Value = selected;
}
}
}
Discussão (0)
Carregando comentários...