PDA

View Full Version : انتخاب چند رکورد از دیتا گرید ویو



mehrdad372
دوشنبه 02 خرداد 1390, 11:11 صبح
سلام خدمت دوستان
پروژه من انتخاب واحد دانشجویی هستش باید طوری بنویسمش که دانشجو از یه گرید ویو چند تا درس رو که برا اون ترم ترم تعریف کردم انتخاب کنه
اگه خاصیا مولتی سلکت گرید ویو رو فعال کنی میتونی چند تا رو انتخاب کنی
فقط چطور میتونم به اون رکوردهایی که انتخاب کردم دسترسی پیدا کنم؟
با تشکر

S.Reza
دوشنبه 02 خرداد 1390, 12:48 عصر
سلام خدمت دوستان
پروژه من انتخاب واحد دانشجویی هستش باید طوری بنویسمش که دانشجو از یه گرید ویو چند تا درس رو که برا اون ترم ترم تعریف کردم انتخاب کنه
اگه خاصیا مولتی سلکت گرید ویو رو فعال کنی میتونی چند تا رو انتخاب کنی
فقط چطور میتونم به اون رکوردهایی که انتخاب کردم دسترسی پیدا کنم؟
با تشکر

سلام

شما می توانید در گرید خود یک CheckBoxColumn تعریف کنید و کاربر برای انتخاب هر درس باید CheckBox مورد نظر را تیک بزند

در ادامه می توانید با تکه کده ساده ای ( مثل کد زیر ) از انتخاب کاربر اطلاع پیدا کنید



String Row=null;
for (int Count = 0; Count < dataGridView1.RowCount; Count++)
{
if(dataGridView1.Rows[Count].Cells[1].Value!=null)
{
Row += dataGridView1.Rows[Count].Cells[0].Value.ToString() + "\n";
}
}
MessageBox.Show(Row.ToString());
Row = null;

mehrdad372
دوشنبه 02 خرداد 1390, 21:36 عصر
میشه یه ذره بیشتر راهنمایی کنید
ممنون میشم

mehrdad372
پنج شنبه 05 خرداد 1390, 23:15 عصر
اگه یه چک باکس بزارم چه جوری باید عمل کنم

B.I.O.H.A.Z.A.R.D
جمعه 06 خرداد 1390, 11:03 صبح
احتیاجی نیست که حتما دانشجو چند تا درس رو همزمان انتخاب کنه. یکی یکی اضافه کنه به لیستش، بعد آخر سر میتونه ثبت نهایی کنه. مثل کاری که خودم کرده بودم واسه پروژم. (حالت منطقی همینطوره مگر اینکه استادتون طوره دیگه خواسته باشه)

یه خرده توضیح میدم: 2 تا datagrid داریم، اولی دروس ارائه شده (که درس ها از توی اون انتخاب میشن) دومی برای دروسی که دانشجو میخواد انتخاب کنه. یعنی از اولی add میکنیم توی دومی. به این صورت:

int len = Application.ExecutablePath.Length - 24;
string AppDir = Application.ExecutablePath.Substring(0, len);
SqlConnection SqlCon = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=" + AppDir + "University.mdf;Integrated Security=True;User Instance=True");
SqlCon.Open();
#region Prevent Redundency
SqlCommand SCM = new SqlCommand("select * from StudentsUnits where (LessonId = '" + lblLessonID.Text + "') and (RecordID = '0' or RecordID = '1')", SqlCon);
var check = SCM.ExecuteScalar();
#endregion


if (check == null)
{
string cmd = "Insert into StudentsUnits(CGroup,LessonId,LessonName,TeacherNa me,Days,StartTime,QuizDate,QuizTime,RecordID,Unit, TeacherCode,StudentId,StudentName) values (N'" + lblCGroup.Text +
"',N'" + lblLessonID.Text +
"',N'" + lblLessonName.Text +
"',N'" + lblTeacherName.Text +
"',N'" + lblDay.Text +
"',N'" + lblStartHour.Text +
"',N'" + lblExamDate.Text +
"',N'" + lblExamHour.Text + "','0',N'" + lblNumOfUnits.Text +
"',N'" + lblTeacherCode.Text +
"',N'" + UniversityProject.UserName +
"',N'" + UniversityProject.StdName + "')";
SqlCommand SqlCmd = new SqlCommand(cmd, SqlCon);
try
{
SqlCmd.ExecuteNonQuery();
MessageBox.Show(".درس مورد نظر به لیست اضافه شد", ":پیام سیستم", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
SqlDataAdapter SqlDa = new SqlDataAdapter("Select * from [StudentsUnits] where RecordID = '0' or RecordID = '1'", SqlCon);
DataSet DS = new DataSet();
SqlDa.Fill(DS, "StudentsUnits");
studentsUnitsBindingSource.DataSource = DS;
Modified = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
SqlCmd.Dispose();
SqlCon.Close();
}
}
else
{
MessageBox.Show(".این درس قبلا در لیست درج شده است", ":پیام سیستم", MessageBoxButtons.OK, MessageBoxIcon.Stop, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
}


و نا گفته نمونه که اون label هایی که مقدارشون توی DB ثبت میشه، از datagrid بالایی (یعنی دروس ارائه شده) استفاده میکنه. (Bind شده)

اگه بازم متوجه نشدین بگید بیشتر توضیح بدم.

mehrdad372
جمعه 06 خرداد 1390, 13:25 عصر
B.I.O.H.A.Z.A.R.D ممنون

این که گفتی دوتا گرید ویو داریم خیلی بهتره دستت درد نکنه فکر خوبیه
میشه یه ذره بیشتر توضیح بدی

B.I.O.H.A.Z.A.R.D
جمعه 06 خرداد 1390, 14:03 عصر
B.I.O.H.A.Z.A.R.D ممنون

این که گفتی دوتا گرید ویو داریم خیلی بهتره دستت درد نکنه فکر خوبیه
میشه یه ذره بیشتر توضیح بدی

توجه کنید، ما 2 تا جدول داریم. یکی دروسی که ارائه شدن مثلا به نام Lessons
و دیگری جدول انتخاب واحد دانشجو اینم فکر کنید اسمش StudentUnits باشه

حالا 2 تا datagrid دارم. مثلاً بالایی به جدول Lessons وصل میشه واسه اینکه محتوای اونو نشون بده که دانشجو بتونه از اون لیست انتخاب کنه و وقتی دکمه انتخاب درس رو زد، اون درس، insert میشه در جدول StudentUnits
و datagrid پایینی به جدول Students Units وصل شده. و هر بار که یه درس اضافه میشه فقط refresh میشه.

برای ثبت نهایی هم یه فیلد status به جدول StudentUnits اضافه میکنیم، که اولین بار که دروس انتخاب میشن، با Status صفر باشه و بعد از ثبت نهایی همه status ها رو 1 میکنیم. یعنی همه رو تایید میکنیم در واقع.

حالا اگه سوالتون اینه که چطور از datagrid بالایی یه فیلد رو انتخاب کنیم و بریزیم در جدول StudentUnits باید از Label های Bind شده به جدول Lessons استفاده کنید. اگر باز متوجه نشدید بگید یه مثال بذارم.

mehrdad372
جمعه 06 خرداد 1390, 23:31 عصر
من از کدهای شما هیچی متوجه نشدم
ممنون از جوابت
ببخش خیلی بهت زحمت دادم