PDA

View Full Version : نمایش اطلاعات دیتابیس در کمبوباکس دیتاگرید



hosseines
دوشنبه 05 خرداد 1393, 09:16 صبح
سلام.
من می خوام اطلاعات یک جدول را در دیتاگرید نمایش بده و یک ستون آن کمبوباکس باشه بصورت شکل زیر.

119508

با تشکر

khokhan
سه شنبه 06 خرداد 1393, 09:18 صبح
اگه کسی یاد داره لطفا کمک کنه.:گریه:

.................................................. .................................................. ...


private void Form2_Load(object sender, EventArgs e)
{
string strCon = "Data Source=dbServer;Initial Catalog=testDB;Integrated Security=True";
string strSQL = "select * from table1";
//
SqlDataAdapter dataAdapter = new SqlDataAdapter(strSQL, strCon);
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
dataAdapter.Fill(table);
//
DataGridViewComboBoxColumn dc = new DataGridViewComboBoxColumn();
dc.DataSource = table;
dc.ValueMember = "ID";
dc.DisplayMember = "Name";
//
dataGridView1.Columns.Add(dc);


}

hosseines
سه شنبه 06 خرداد 1393, 11:19 صبح
ممنون دوست عزیز.
ولی من به این صورت می خوام:
دو تا جدول دارم که اولی شامل کد-نام و نشان - وضعیت حضور(1-علی نفری-مرخصی و ...) وقتی فرم لود میشه وضعیت حضور رو در کمبوباکس نشان بده و وقتی روی کمبو باکس کلیک می کنم شامل یکسری اطلاعات از جدول دیگر مثل مرخصی - حضور-غیبت و ... باشد..

hosseines
شنبه 10 خرداد 1393, 11:42 صبح
سلام
میخوام در کمبوباکس دیتاگرید یک فیلد از جدول را نمایش دهم یعنی وقتی برنامه را اجرا کردم مقدار کمبوباکس برابر مقدار Pos جدول باشد و در صورت کلیک برروی کمبوباکس مقادیری را نمایش دهد که اکنون دارد نشون میده برنامه رو ضمیمه کردم اگه تونستید خواهشا کمک کنید..

khokhan
شنبه 10 خرداد 1393, 14:37 عصر
سلام
میخوام در کمبوباکس دیتاگرید یک فیلد از جدول را نمایش دهم یعنی وقتی برنامه را اجرا کردم مقدار کمبوباکس برابر مقدار Pos جدول باشد و در صورت کلیک برروی کمبوباکس مقادیری را نمایش دهد که اکنون دارد نشون میده برنامه رو ضمیمه کردم اگه تونستید خواهشا کمک کنید..
خب ؟؟؟؟؟؟؟؟؟:متعجب:
پس مشکل چیه ؟

hosseines
شنبه 10 خرداد 1393, 19:29 عصر
مشکل اینجاست که می خوام وقتی فرم اجرا شد مقدار کمبوباکس بصورت پیش فرض برابر فیلد Pos باشد. بعدش اگر روی کمبوباکس کلیک شد مقادیر را نمایش بده...

khokhan
شنبه 10 خرداد 1393, 21:04 عصر
مشکل اینجاست که می خوام وقتی فرم اجرا شد مقدار کمبوباکس بصورت پیش فرض برابر فیلد Pos باشد. بعدش اگر روی کمبوباکس کلیک شد مقادیر را نمایش بده...
عزیزنشون می ده دیگه :لبخند:

hosseines
شنبه 10 خرداد 1393, 22:01 عصر
شرمنده نه دیگه نشون نمیده.
منظورم این است که وقتی فرم اجرا شود مثلا مقدار کمبوباکس رکورد اول برابر با مقدار حضور(مقدار فیلد pos) باشد. رکورد دوم برابر حضور و الی آخر...
119743

khokhan
یک شنبه 11 خرداد 1393, 00:02 صبح
شرمنده نه دیگه نشون نمیده.
منظورم این است که وقتی فرم اجرا شود مثلا مقدار کمبوباکس رکورد اول برابر با مقدار حضور(مقدار فیلد pos) باشد. رکورد دوم برابر حضور و الی آخر...


شما برای پر نمودن ستون کمبو باکس کد ها تون رو اینطور نوشتین :

SqlDataAdapter da1 = new SqlDataAdapter("Sp_ListCombo", con);
da1.SelectCommand.CommandType = CommandType.StoredProcedure;
DataTable dt1 = new DataTable();
da1.Fill(dt1);
string pona = DataGridView.CurrentRow.Cells[4].Value.ToString();
DataGridViewComboBoxColumn col = (DataGridViewComboBoxColumn)DataGridView.Columns["PO"];
col.DataSource = dt1;
col.DisplayMember = "Poss";
col.ValueMember = "Code_Poss";
خب تا اینجا درست !!!!!
اما چیزی که الا ن قصد دارین انجام بدین اینه که انتخاب پیش فرض برا هر کدوم از کمبو باکسها مقدار موجود در ستون چهارم گرید باشه
برای این کار ابتدا بایستی یه حلقه تشکیل بدین و کوئری مربوط به کمبو باکس رو هم بر اساس مقدار موجود در ستون چهارم فیلتر کرده و درون حلقه به عنوان مقدار پیش فرض به کمبوباکس انتقال بدین
به این شکل :

for (int x = 0; x <= DataGridView.Rows.Count - 1; x++)
{
DataGridViewCell cell = DataGridView.Rows[x].Cells["PO"];
if (col.Items.Count > 0)
{

col.DefaultCellStyle.NullValue = dt1.Rows[0][1].ToString();
}
}

hosseines
یک شنبه 11 خرداد 1393, 11:21 صبح
ممنون دوست عزیز
شرمنده متوجه نشدم باید چیکار کنم.؟؟؟؟
کد شما را استفاده کردم ولی مقدار همه کمبوباکس ها برابر مقدار اولین رکورد (حضور) شد.