PDA

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



ERIKA
دوشنبه 30 خرداد 1390, 15:13 عصر
سلام
دوستان می خوام بدونم باید چه جوری کدش را بنویسم
سوال اول :
من یک کمبو باکسی دارم که اطلاعات مربوط به نام کالا ها در آن لود شده است میخام با کلیک روی هر کدام از انها سایر اطلاعاتش در یک دیبی گرید(1) لود شود

سوال دوم :بعد این دیبی گریداول باید به صورتی باشدکه با پیمایش روی هر سطر ان با کلید های جهت نما بالا و پایین جزئیات ان فاکتور را نمایش دهد
با تشکر

یوسف زالی
دوشنبه 30 خرداد 1390, 15:59 عصر
سلام.
راههای متنوعی وجود داره اما فکر می کنم که این مناسب باشه:
یه SP برای master و یکی برای detail.
SP مستر یه پارامتر که از کمبو گرفته میشه رو دریافت می کنه و فیلتر میشه.
تو AfterScroll مستر کد refresh برای detail میگذاری که بر اساس مستر فیلتر میشه.(این یک بخش احتمالال با Master-Detail کردن خود دیتاست ها هم شدنی هست.)

ERIKA
دوشنبه 30 خرداد 1390, 21:16 عصر
سلام
من با spکار نمی کنم
کدی هم که نوشتم به این صورت ولی خطا داره و می دانم که جایی یا باید نقص داشته باشه



private void CmbSearch_SelectedValueChanged(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.DefaultView.RowFilter = clsperson.ShowFactorPerdon(ClassPerson.FieldSearch .P_Name, CmbSearch.Text).ToString();
dataGridView1.DataSource = dt;

}

public DataTable ShowFactorPerdon(FieldSearch _FieldSearch, string StrSearch)
{
dal.Connect();
DataTable dt=dal.selectcommand(" SELECT dbo.Details.D_ID, dbo.Details.H_ID, dbo.Details.G_ID, dbo.Details.Num, dbo.Details.Nerkh, dbo.Header.H_ID AS Expr1, dbo.Header.Kind,"+
"dbo.Header.P_ID, dbo.Header.HDate, dbo.Persons.P_ID AS Expr2, dbo.Persons.FName, dbo.Persons.LNAme"+
"FROM dbo.Details INNER JOIN"+
"dbo.Header ON dbo.Details.D_ID = dbo.Header.H_ID INNER JOIN"+
"dbo.Persons ON dbo.Header.H_ID = dbo.Persons.P_ID"+
"WHERE (" + _FieldSearch.ToString() + " LIKE '" + StrSearch + "%')");
dal.Disconnect();
return dt;
}

zarrinnegar
دوشنبه 30 خرداد 1390, 22:35 عصر
سلام
من با spکار نمی کنم
کدی هم که نوشتم به این صورت ولی خطا داره و می دانم که جایی یا باید نقص داشته باشه



private void CmbSearch_SelectedValueChanged(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.DefaultView.RowFilter = clsperson.ShowFactorPerdon(ClassPerson.FieldSearch .P_Name, CmbSearch.Text).ToString();
dataGridView1.DataSource = dt;

}

public DataTable ShowFactorPerdon(FieldSearch _FieldSearch, string StrSearch)
{
dal.Connect();
DataTable dt=dal.selectcommand(" SELECT dbo.Details.D_ID, dbo.Details.H_ID, dbo.Details.G_ID, dbo.Details.Num, dbo.Details.Nerkh, dbo.Header.H_ID AS Expr1, dbo.Header.Kind,"+
"dbo.Header.P_ID, dbo.Header.HDate, dbo.Persons.P_ID AS Expr2, dbo.Persons.FName, dbo.Persons.LNAme"+
"FROM dbo.Details INNER JOIN"+
"dbo.Header ON dbo.Details.D_ID = dbo.Header.H_ID INNER JOIN"+
"dbo.Persons ON dbo.Header.H_ID = dbo.Persons.P_ID"+
"WHERE (" + _FieldSearch.ToString() + " LIKE '" + StrSearch + "%')");
dal.Disconnect();
return dt;
}





به نظر من از like استفاده نکن
وقتی combobox رو پر میکنی 2 تا قسمت رو بهش میدی
combobox1.displaymember="fieldname";
combobox1.valumember="filedname";

هر وقت گزینه ای انتخاب شه مقدار selectvalue اون میشه کد اون کالا
بعدش توی دستور select از کد استفاده کن
بعدش هم سعی کن بین دستورات یک فاصله بزاری مخصوصاً اول و آخر قسمتهایی که با علامت + میخوای به رشته دیگه ای وصل کنی

ERIKA
سه شنبه 31 خرداد 1390, 11:16 صبح
سلام من نتونستم مشکل این را حل کنم برنامه اش را گذاشتم