PDA

View Full Version : انتخاب یک فیلد از کومبو و بدست آورن فیلد دیگر از دیتابیس



c_doost
دوشنبه 07 فروردین 1391, 10:55 صبح
سلام

در دیتابیس سه فیلد دارم یکی کلید اصلی و دو فیلد معمولی

یکی از این دو فیلد معمولی را به کومبو بایند کردم و کومبو را حالتی قرار دادم که با زدن یک کاراکتر اطلاعاتی که با آن کارکتر شروع میشوند در کومبو نشان داده میشود
مثلا با زدن کارکتر س تمام رکوردهایی که با س شروع میشوند در کومبو نشان داده میشود

حالا میخخوام وقتی کاربر یکی از این رکوردهای موجود در کومبو را وقتی انتخاب کرد اون یکی دیگه فیلد معمولی که در دیتابیس هست را در بیارم
آیا اینکار شدنی است؟

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


da = new SqlDataAdapter("SELECT reshte_honari FROM tbl_grouphonari", con);
da.Fill(ds, "tbl_grouphonari");
comboBox2.DataSource = ds.Tables["tbl_grouphonari"];
comboBox1.DisplayMember = "reshte_honari";
comboBox1.ValueMember = "code_reshte



"code_reshte کلید اصلی نیست

ijavad
دوشنبه 07 فروردین 1391, 12:02 عصر
دوست عزيز اولش كه select شما اشتباه چون يك فيلد رو انتخاب كردين و نميتونيد code_reshte رو به ValueMember نسبت بدين بعدش هم شما بيشتر از دوتا فيلد رو نميتونيد به كامبو نسبت بديد مگر اين كه ValueMember رو كليد اصلي قرار بدين و بعد از انتخاب كاربر يك select ديگه با where بزنيد و فيلد ديگه رو كه ميخواهيد بدست بياوريد.
اگه اين نوشته به شما كمك نميكنه لطفا واضح تر توضيح بديد.

BAHAL_KEYHAN
دوشنبه 07 فروردین 1391, 12:11 عصر
(CType(BindingContext(DataSource, Datamember), CurrencyManager
متد current رکورد جاری رو بر می گردونه

c_doost
دوشنبه 07 فروردین 1391, 12:28 عصر
(CType(BindingContext(DataSource, Datamember), CurrencyManager
متد current رکورد جاری رو بر می گردونه
میتونی یک کد بزاری؟

BAHAL_KEYHAN
دوشنبه 07 فروردین 1391, 13:37 عصر
کدش همینه,اگه چندتا control باشه که به یه dataset روی یک form , بیند شده باشه با متد contextBinding که توسط فرم ارایه میشه می تونی به شیی curencymanager مربوط به binding دسترسی داشته باشی
اسم datatmember و datasourceto benevis جای پارامتر ها جواب می گیری

c_doost
دوشنبه 07 فروردین 1391, 14:25 عصر
کدش همینه,اگه چندتا control باشه که به یه dataset روی یک form , بیند شده باشه با متد contextBinding که توسط فرم ارایه میشه می تونی به شیی curencymanager مربوط به binding دسترسی داشته باشی
اسم datatmember و datasourceto benevis جای پارامتر ها جواب می گیری

من چیزی از حرفتون نفهمیدم لطفا کد بزارید منظورتونو بفهمم
با تشکر

BAHAL_KEYHAN
سه شنبه 08 فروردین 1391, 15:18 عصر
فقط شرمنده که کد برای VB.net

Protected ReadOnly Property CurrencyManager() As CurrencyManager
Get
Return CType(BindingContext(DataSource, Datamember), CurrencyManager)

End Get
End Property
Public ReadOnly Property DataRowView() As DataRowView
Get

Dim o As Object = CurrencyManager.Current
If TypeOf o Is DataRowView Then
Return CType(o, DataRowView)
Else
Return Nothing
End If
End Get
End Property


من این یه نمونه کد رو برای برنامه ی خاصی نوشتم
تو هم می تونی با نوشتن اسم dataset به جای datasource ونام تیبلت به جای datamember,این قطعه کد رو به برنامت اضافه کنی
و هر جا که خواستی به طور مثال این جوری ازش استفاده کنی
DataRowView("code_reshte")
یا
DataRowView("reshte_honari")
در ضمن نام dataset شما ds,
table شما "tbl_grouphonari",که حتما نام table رو باید string بدی

asadegha
سه شنبه 08 فروردین 1391, 23:47 عصر
دستور SELECT رو درست کنی جواب میده. ربطی نداره VALUEMEMBER کلید اصلی باشه یا نه.

BAHAL_KEYHAN
چهارشنبه 09 فروردین 1391, 02:32 صبح
مشکل حل شد

Mohandes2009
چهارشنبه 09 فروردین 1391, 09:14 صبح
private void comAzD_SelectedIndexChanged(object sender, EventArgs e)
{
comTaD.Items.Clear();
var a = from c in linq.TDakhelis
where c.Az==comAzD.Text
select c.Be;
foreach (string item in a)
{
comTaD.Items.Add(item);
}
}

BAHAL_KEYHAN
چهارشنبه 09 فروردین 1391, 11:09 صبح
روش بهینه نیست

c_doost
چهارشنبه 09 فروردین 1391, 11:31 صبح
روش بهینه نیست

دوست عزیز برنامه نویسیم خوب نیست یک ورش بهینه به من یاد بدید

با تشکر

BAHAL_KEYHAN
چهارشنبه 09 فروردین 1391, 12:13 عصر
داری query می نویسی خب
وقتی handle دیتا رو form.BindingContextبهت بر می گردونه چه کاریه query بنویسیم
اگه پایین صفحه بری روش منو میبینی

c_doost
چهارشنبه 09 فروردین 1391, 12:24 عصر
داری query می نویسی خب
وقتی handle دیتا رو form.BindingContextبهت بر می گردونه چه کاریه query بنویسیم
اگه پایین صفحه بری روش منو میبینی
پایین صفحه چیه
کجارو میگی
لطفا دقیق تر توضیحح بده

c_doost
چهارشنبه 09 فروردین 1391, 22:02 عصر
private void comAzD_SelectedIndexChanged(object sender, EventArgs e)
{
comTaD.Items.Clear();
var a = from c in linq.TDakhelis
where c.Az==comAzD.Text
select c.Be;
foreach (string item in a)
{
comTaD.Items.Add(item);
}
}

برادر من در کد نویسی ساده اش هم موندم شما با تینکیو کد میزارین؟:لبخند: ولی تشکر از اینکه به فکر بودید

BAHAL_KEYHAN
پنج شنبه 10 فروردین 1391, 19:50 عصر
اسمش لینک هستش,نه تینکیو