PDA

View Full Version : پر کردن کمبوباکس در پروژه چندلایه



mahdipc
یک شنبه 29 دی 1392, 18:08 عصر
سلام.دوستان من میخوام از طریق یه فرم لایه سوم به لایه دومم وصل بشه و از اونجا کمبو باکسم رو پر کنه.از اونجا که تو لایه دوم کمبوباکس نداریم میخوام از لایه سوم بصورت متغییر بفرسم به لایه دوم.حالا مشکلم اینه که چجوری بفرسم:لبخند:
تو لایه دوم":
public void ReadCom( name co_Classification)
به جا name چی بزارم که خواص ش هم داشته باشم؟
ببخشید اگه بد منظورم رو گفتم

Mahmoud.Afrad
یک شنبه 29 دی 1392, 18:25 عصر
این کار کاملا اشتباهه. یعنی لایه پایین تر هیچ دسترسی به لایه بالاتر نباید داشته باشه بلکه لایه بالاتر به لایه پایین تر دسترسی پیدا میکنه.
در لایه دوم متدی باید بنویسید که اطلاعات مورد نیاز رو بدست بیاره. در لایه سوم ازش استفاده میکنی.

mahdipc
یک شنبه 29 دی 1392, 18:33 عصر
ببخشید فکر کنم جای لایه اول و سوم رو اشتباه نوشتم.
این کار من تو کد نویسی اشتباه هست ؟
لایه اول
private void bt_Login_Click(object sender, EventArgs e)
{
if ((txt_UserName.Text == string.Empty) || (txt_PassWord.Text == string.Empty))
{
MessageBox.Show("لطفا اطلاعات را وارد کنید!");
}
else if (bal.Read(bal.Select_Users(txt_UserName.Text, txt_PassWord.Text)) == true)
{
main main = new main();
main.Show();
this.Hide();
}
else
{
MessageBox.Show(" رمز یا نام کاربری اشتباه است!");
}
}
لایه bal
public bool Read(string SelectDB)
{
bool read;
dal.com.CommandText = SelectDB;
dal.Connect();
SqlDataReader reader;
reader = dal.com.ExecuteReader();
read = reader.HasRows;
dal.DisConnect();
return read;
}
public string Select_Users(string username, string password)
{
string Select = "Select * from users where UserName = N'" + username + "' AND PassWord = N'" + password + "'";
return Select;
}

لایه dal
هم که ربط داره..
حالا ممنون میشم ایراد کدم رو بگین اگه ایراد داره؟
راسی چجور یه کمبو باکس رو بفرسم لایه دوم پرشه برگرده یا شبیه این کار رو ؟

Mahmoud.Afrad
یک شنبه 29 دی 1392, 18:45 عصر
لایه dal رو هم بزارید.

mahdipc
یک شنبه 29 دی 1392, 18:47 عصر
class DAL
{
public SqlConnection con;
public SqlCommand com;
public SqlDataAdapter da;
public DAL()
{
con = new SqlConnection();
com = new SqlCommand();
da = new SqlDataAdapter();
com.Connection = con;
da.SelectCommand = com;
}
public void Connect()
{
con.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DB.mdf;Integrated Security=True;User Instance=True;";
con.Open();
}
public void DisConnect()
{
con.Close();
}
public void EXE(string SQL)
{
com.CommandText = SQL;
com.ExecuteNonQuery();
}
public DataTable Select(string SQL)
{
com.CommandText = SQL;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}

کجاش اشتباه؟

Mahmoud.Afrad
یک شنبه 29 دی 1392, 19:17 عصر
میشه بهتر نوشت.
dal لایه اول ، bal دوم و ui لایه سومه.

در لایه دوم یک متد بنویس که حاصل کوئری مورد نظر رو در یک دیتاتیبل بریزه. در لایه سوم فراخوانی کن و به دیتاسورس کمبوباکس پاس بده.

mahdipc
یک شنبه 29 دی 1392, 19:39 عصر
اخه شما گفتین اشتباهه...
میشه بگید اصول ترش چجوریه؟