PDA

View Full Version : حرفه ای: پراپرتی SelectedIndex در DataGridViewComboBoxColumn



Sal_64
شنبه 09 مهر 1390, 08:54 صبح
سلام
بنده در محیط طراحی به دیتا گرید ستونی از نوع کمبو باکس اضافه کردم و بهش مقادیری دادم
خواستم بدونم چطور میشه پس از اضافه شدن هر ردیف جدید به دیتا گرید ، اولین آیتم موجود در کمبو باکس بصورت پیش فرض انتخاب و نمایش داده شود

تشکر

noroozifar
شنبه 09 مهر 1390, 10:22 صبح
دوست من شاید این کدها بدردت بخوره من توسط این کدها تنظیم کرده ام که کمبوباکس داخل گرید ویو برابر لیست خودش بشه و بعد هم تنظیم کرده ام زمانیکه از این کامبو باکس میایم بیرون طبق کدی که انتخاب شده در کمبو باکس بقیه ستونها دیتا گرید از بانک خوانده پر بشه فکر کنم بتونی با کمی تغییر کار خودت را انجام بدی



public GiveCalla()
{
InitializeComponent();
dgvGive.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dgv_ EditingControlShowing);
this.dgvGive.CellLeave += new DataGridViewCellEventHandler(dgv_CellLeave);
}

private void combo_SelectedIndexChange(object sender, EventArgs e)
{


adapter5 = new OleDbDataAdapter("select * from calla where code_calla=" +textBox1 .Text , connect);
dataset5 = new DataSet();
adapter5.Fill(dataset5, "calla");
dgvGive.Rows[dgvGive .CurrentRow .Index ].Cells["namecalla"].Value = dataset5.Tables["calla"].Rows[0]["name"];
dgvGive.Rows[dgvGive .CurrentRow .Index ].Cells["typecalla"].Value = dataset5.Tables["calla"].Rows[0]["type"];

}

void dgv_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
ComboBox cm = e.Control as ComboBox;
if (cm != null)
{
cm.DropDownStyle = ComboBoxStyle.DropDownList;

}
}

void dgv_CellLeave(object sender, DataGridViewCellEventArgs e)
{
string column = dgvGive.Columns[dgvGive.CurrentCell.ColumnIndex].Name;
if (column == "codecalla")
{
ComboBox combo = this.dgvGive.EditingControl as ComboBox;
if (combo != null)
{
combo.DropDownStyle = ComboBoxStyle.DropDownList;
textBox1 .Text = combo.SelectedValue.ToString();
combo.SelectedIndexChanged += new EventHandler(combo_SelectedIndexChange);
combo_SelectedIndexChange(null, null);
}

}
}

Sal_64
شنبه 09 مهر 1390, 10:32 صبح
سلام
تشکر

سه روش پیدا کردم

روش اول
در زمان ایجاد رکورد جدید
، محتویات دلخواه رو داخل آرایه ای میریزم و با استفاده از اونها رکورد جدید رو میسازم

string[] row_data = new string[1];
row_data[0] = marhale.ToString();
dgv.Rows.Add(row_data);

دوم پس از ایجاد رکورد جدیدبا این دستور

dgv.Rows[row_index_marhale].Cells["end"].Value = "خیر";

سوم پس از ایجاد رکورد جدید با این دستور

dgv.Rows[row_index_marhale].Cells["daryafti"].Value = (dgv.Rows[row_index_marhale].Cells["daryafti"] as DataGridViewComboBoxCell).Items[0];

امیدوارم بدرد دوستان بخوره