PDA

View Full Version : @قرار دادن يك فيلد جدول در textbox



coolak
سه شنبه 06 تیر 1391, 15:59 عصر
با عرض خسته نباشيد به تمام اساتيد اين انجمن.
بنده توي يك فرم, combox و يك textbox دارم.در combox فيلدهاي يك ستون جدول رو گذاشتم.حالا ميخوام با تغيير combox مقدار فيلد ستون ديگه اي از آن جدول (مربوط ب همان ركورد) در داخل textbox قرار بگيره.من يك پروسيجر Pselect هم در sql درست كردم با پارامتر y ك y مقدار همان combox فرم هست.نميدونم ك اين پروسيجر رو به چه صورت استفاده كنم.تو چه event ي
ممنون ميشم از راهنماييتون

Y_Safaiee
سه شنبه 06 تیر 1391, 16:22 عصر
با سلام خدمت شما دوست گرامی

ساده ترین راه ممکن اینه که وقتی اطلاعات رو لود میکنین DisplayMember کمبوباکستونو برابر با فیلد اول مثلا نام و ValueMember رو برابر با فیلدی که دوست دارید وقتی کاربر انتخاب کرد برگشت داده شه مثلا فامیل کنید

مثه



comboBox1.DisplayMember = dt.Columns["name"].ToString();
comboBox1.ValueMember = dt.Columns["family"].ToString();



و بعد این کدو بنویسین



private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = comboBox1.SelectedValue.ToString();
}


وقتی اطلاعات رو بارگزاری میکنید یا اصطلاحا Fill میکنید داخل کمبوباکس از اسم ها پر میشه اما نکته جالبش اینه که با انتخاب هر اسم فامیلش در لیبل نمایش داده میشه

به همین راحتی و بدون هیچ گونه کوئری نویسی

موفق باشی
بایت بایت

Y_Safaiee
سه شنبه 06 تیر 1391, 16:35 عصر
با سلام مجدد

اینم یه سمپل کد که برات نوشتم (اصلا کوئری براش نساختم و راحت با کدها توش بازی کردم)



private void Form1_Load(object sender, EventArgs e)
{
SqlConnection cnn=new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;User Instance=True");
cnn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "select * from table1";
cmd.ExecuteNonQuery();
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
comboBox1.DataSource = dt;
comboBox1.DisplayMember = dt.Columns["name"].ToString();
comboBox1.ValueMember = dt.Columns["family"].ToString();
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = comboBox1.SelectedValue.ToString();
}



موفق باشی
بایت بایت

coolak
سه شنبه 06 تیر 1391, 17:20 عصر
با سلام مجدد

اینم یه سمپل کد که برات نوشتم (اصلا کوئری براش نساختم و راحت با کدها توش بازی کردم)



private void Form1_Load(object sender, EventArgs e)
{
SqlConnection cnn=new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\Database1.mdf;Integrated Security=True;User Instance=True");
cnn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "select * from table1";
cmd.ExecuteNonQuery();
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
comboBox1.DataSource = dt;
comboBox1.DisplayMember = dt.Columns["name"].ToString();
comboBox1.ValueMember = dt.Columns["family"].ToString();
}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
label1.Text = comboBox1.SelectedValue.ToString();
}



موفق باشی
بایت بایت
ممنون از جواب كاملتون.ولي متاسفانه يادم رفت بگم ك با LINQ كانكت شدم.اين دستورات جواب نميده: (

Mahmoud.Afrad
سه شنبه 06 تیر 1391, 18:51 عصر
در مثال زیر فرض بر اینست که کمبوباکس حاوی id ها میباشد و با انتخاب آیدی از کمبوباکس ، نام متناظر در تکست باکس نمایش داده میشه
using (DataClasses2DataContext datacontext = new DataClasses2DataContext())
{
var result = (from p in datacontext.tbls
where p.id == Convert.ToInt32(comboBox2.SelectedItem)
select p).SingleOrDefault();
textBox1.Text = result.name;
}

Y_Safaiee
سه شنبه 06 تیر 1391, 19:06 عصر
با سلام مجدد

ممنونم از دوست عزیزم "mafaman2003 (http://barnamenevis.org/member.php?71297-mafaman2003)" که کار من رو راحت کرد و نیازی نیست دوباره کد بنویسم.

موفق باشید
بایت بایت

coolak
چهارشنبه 07 تیر 1391, 00:02 صبح
در مثال زیر فرض بر اینست که کمبوباکس حاوی id ها میباشد و با انتخاب آیدی از کمبوباکس ، نام متناظر در تکست باکس نمایش داده میشه
using (DataClasses2DataContext datacontext = new DataClasses2DataContext())
{
var result = (from p in datacontext.tbls
where p.id == Convert.ToInt32(comboBox2.SelectedItem)
select p).SingleOrDefault();
textBox1.Text = result.name;
}
بازم خيلي ممنون از راهنماييتون: ))