PDA

View Full Version : اتصال DropDownListبه همه فیلدها بجای 2 فیلد



Reborn
جمعه 10 اسفند 1386, 16:49 عصر
سلام.
این سئوال که میپرسم رو تا حالا هیچ کس درست و حسابی نتونسته پاسخ بده.
اومدم تو این فاروم ببینم اینجا چطوره.
حالا میرم سر اصل مطلب:
من یک DropDownList دارم که مقدار DataTextField رو Name دادم و مقدار DataValueField رو PersonID دادم.
حالا اگر بخوام سن فرد مورد نظر یا همون فیلد Age رو ببینم چیه چطور باید این کارو کرد؟
توجه: میخوام راه اصولی و کوتاهش رو بدونم وگرنه کار نداره یک SELECT دیگه بگیرم که بر اساس Person بیاد سن رو برگردونه.
تو دلفی که قبلا کار میکردم خیلی راحت بود.
RecNo رو برابر اندیس DropDownList قرار میدادیم. بعد میگفتیم فیلد Age رو برگردون. به همین راحتی. آیا راه مشابه در اینجا وجود داره؟ اگر کسی نمیدونه راه دیگه ای هم دارید بگید جای بسی تشکر دارد.

asilverisis
جمعه 10 اسفند 1386, 18:10 عصر
سلام
خیلی ساده هست.
توی رویداد SelectedValueChanged یا SelectedIndexChange این کد رو بنویس.


Age = TblPrsBindingSource(TblPrsBindingSource.Position)("Age")

Reborn
جمعه 10 اسفند 1386, 22:51 عصر
سلام
خیلی ساده هست.
توی رویداد SelectedValueChanged یا SelectedIndexChange این کد رو بنویس.


Age = TblPrsBindingSource(TblPrsBindingSource.Position)("Age")

سلام.
اگه واقعا همین یک خط باشه همونی هست که دنبالش بودم.
فقط یک نکته. این TblPrsBindingSource چیه؟ من برای پر کردن لیست از این دستورات استفاده کردم:


Dim Con AsNew SqlConnection("Server=LocalHost;Database=Markaz2;Integrated Security=True;")
Dim DA AsNew SqlDataAdapter("SELECT RTrim(Name) + ' ' + RTrim(Details) As Name,GoodID, Remains FROM Goods", Con)
Dim DT AsNew DataTable
Con.Open()
DA.Fill(DT)
ddlGood.DataSource = DT
ddlGood.DisplayMember = "Name"
ddlGood.ValueMember = "GoodID"

ضمنا این رو هم بگم که من به تازگی از دلفی روی دات نت سوئیچ کردم.
باز هم تشکر از توجه شما.
موفق باشید...

Reborn
شنبه 11 اسفند 1386, 12:24 عصر
اینجا هم کسی نیست که بتونه پاسخ بده؟
حتی مدیران فاروم؟

Dariuosh
یک شنبه 12 اسفند 1386, 14:02 عصر
اینجا هم کسی نیست که بتونه پاسخ بده؟
حتی مدیران فاروم؟
بهتر نیست یه تیکه از برنامتو که توش مشکل داری بزاری چون اینطوری من که درست نفهمیدم

ghafoori
یک شنبه 12 اسفند 1386, 15:07 عصر
این TblPrsBindingSource چیه؟
یک کنترل bindingsource است کاربرد این کنترل این است که بین جدول و دیگر کنترلها قرار می گیرد و کار ان هماهنگی بین چند کنترل که به یک منبع وصل می شوند است و همین طور از ان برای فیلتر کردن و یافتن اطلاعات را هم می توانید استفاده کنید

Reborn
یک شنبه 12 اسفند 1386, 20:34 عصر
سلام آقای غفوری.
اگر امکان داره لطفا با توجه به کدی که نوشتم کد مورد نیاز که احتمالا 2-3 خط بیشتر نباشه رو بگید. من زیاد دات نت کار نکردم.
با تشکر...

Dariuosh
دوشنبه 13 اسفند 1386, 07:47 صبح
ببین این به کارت میاد

Reborn
دوشنبه 13 اسفند 1386, 19:03 عصر
مرسی داریوش جان از توجه شما.
چی رو متوجه نشدی دوباره توضیح بدم؟
من با کدی که دادم DropDownList رو به جدول وصل میکنم.
این جدول فیلدهای ID Name Family Age رو داره.
فیلد ID رو به DataValueField و فیلد Name رو به DataTextField وصل کردم.
حالا میخوام بدونم چطور میشه وقتی کاربر یک نفر رو انتخاب میکنه مثلا سنش و فامیلش رو هم بدونم؟
احتمالا یک یا دو خط کد باشد که دنبالش هستم.
به آقای asilverisis (http://barnamenevis.org/forum/member.php?u=10463) هم مشکلم رو بصورت پیام خصصی گفتم ولی ظاهرا تحویل نگرفتن.
لطفا یکی کمک کنه. چون فکر میکنم تو این فاروم احتمالا کسایی هستن که از یک دستور Insert ساده بیشتر اطلاعات داشته باشند.

Dariuosh
سه شنبه 14 اسفند 1386, 08:37 صبح
وقتی تو از یک BindingSourceاستفاده میکنی و کنترل هات رو به اون وصل میکنی با تغییر یکی بقیه اون ها هم عوض میشه !
حالا تو بعد از تغییر DropDownمیخوای سن رو تو چی نمایش بدی ؟
حتی میتونی تو دل برنامه ازش استفاده کنی
مثلا تو اون فایلی که گذاشتم با تغییر Combo دیتاگرید هم عوض میشه و بر عکس .

Reborn
پنج شنبه 16 اسفند 1386, 10:08 صبح
حالا تو بعد از تغییر DropDownمیخوای سن رو تو چی نمایش بدی ؟


سلام داریوش خان.
آقا خواهشمندم اگر میدونی مشکلم چطوری حل میشه راهش رو بگو.
تو این همه پستی که دادم مشخصه منظورم چیه.
این اصلا مهم نیست که میخوام تو چی نشون بدم. مهم اینه که میخوام اون مقدار رو داشته باشم. شما فرض کن تو یک متغییر، تکست باکس، یا هر جای دیگه...
بازم مرسی... بای

Reborn
جمعه 17 اسفند 1386, 17:43 عصر
نبود کسی که بتونه جواب بده؟

mazoolagh
شنبه 18 اسفند 1386, 11:02 صبح
شما age رو هم توی همون select وارد کنین (با join)
با داشتن gooid با همون یک خط کد age رو هم دارین. حالا یا از selected index بعنوان اندیس dt استفاده میکنین یا از روش find . خوب اولی بهتره.

Reborn
شنبه 18 اسفند 1386, 13:47 عصر
سلام. باتوجه به این کد میتونید بهم بگید چی کار باید بکنم؟
عرض کردم خدمت دوستان که من تازه دات نت سوییچ کردم و نمیدونم کدوم یکی از آبجکتهای من بایندینگ سورس هست.
عاجزانه خواهشمندم که یک یا دو خط کد مورد نیاز را تایپ کنید. منهم یه جوری جبران میکنم. ابزارهای خوب در برنامه نویسی زیاد دارم که به درد شما بخوره. فقز همین مشکل من رو حل کنید.


Dim Con AsNew SqlConnection("Server=LocalHost;Database=Markaz2;Integrated Security=True;")
Dim DA AsNew SqlDataAdapter("SELECT RTrim(Name) + ' ' + RTrim(Details) As Name,GoodID, Remains FROM Goods", Con)
Dim DT AsNew DataTable
Con.Open()
DA.Fill(DT)
ddlGood.DataSource = DT
ddlGood.DisplayMember = "Name"
ddlGood.ValueMember = "GoodID"

ghafoori
شنبه 18 اسفند 1386, 17:41 عصر
ببین شما بعد از اینکه کاربر نام فرد را در combo انتخاب کرد شما بااستفاده از id فرد و متد find شی bindingsource می توانی بقیه اطلاعات را هم بدست اورید این هم مثال با دو راه حل
15238

Dariuosh
یک شنبه 19 اسفند 1386, 08:12 صبح
انشااله که دیگه با مثال آقای قفوری مشکلت حل شده باشه

Reborn
دوشنبه 20 اسفند 1386, 10:56 صبح
غفوری جون دستت درد نکنه کدت خوبه فقط یک موردی. روم به دیوار شرمنده که اینقدر روی سئوالم پافشاری میکنم.
من اصلا از کامپوننتهایی که شما گذاشتی استفاده نکردم! پروژه تقریبا تکمیل شده و همه اونو با کد نوشتم. هر چی میخوام از بایندینگ سورس استفاده کنم قبول نمیکنه. میشه یه لطفی کنی بگی تو این کدی که من نوشتم باید چه تغییری بدم؟ مرسی عزیز. اینم کدم:


Dim Con AsNew SqlConnection("Server=LocalHost;Database=Markaz2;Integrated Security=True;")
Dim DA AsNew SqlDataAdapter("SELECT RTrim(Name) + ' ' + RTrim(Details) As Name,GoodID, Remains FROM Goods", Con)
Dim DT AsNew DataTable
Con.Open()
DA.Fill(DT)
ddlGood.DataSource = DT
ddlGood.DisplayMember = "Name"
ddlGood.ValueMember = "GoodID"

ghafoori
دوشنبه 20 اسفند 1386, 11:52 صبح
می توانی از متد select دیتاتیبل استفاده کنی این هم کد تغییر یافته شما

Dim Con As New SqlConnection("Server=LocalHost;Database=Markaz2;Integrated Security=True;")
Dim DA As New SqlDataAdapter("SELECT RTrim(Name) + ' ' + RTrim(Details) As Name,GoodID, Remains FROM Goods", Con)
Dim DT As New DataTable
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Con.Open()
DA.Fill(DT)
ddlGood.DataSource = DT
ddlGood.DisplayMember = "Name"
ddlGood.ValueMember = "GoodID"
End Sub

Private Sub ddlGood_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ddlGood.SelectedIndexChanged
Dim r As DataRow
r = DT.Select("GoodID=" + ddlGood.SelectedValue.ToString)(0)
Label1.Text = r.Item("age").ToString
End Sub
من به ساختار برنامه شما اشنا نیستم اما فکر کنم با این کدهایی که دادم بتوانید پروژتان را جمع جور کنید شما می خواهید یک داده را جستجو کنید که این کار هم با متد select دیتا تیبل یا find بایندینگ سورس یا دیتاویو انجام می شود که باید خودتان دستی تعریف کنید