PDA

View Full Version : مشکل با دیتا گرید



kablayi
جمعه 03 خرداد 1387, 01:18 صبح
سلام ...
اگه به تصویر زیر دقت کنیدبه مشکل من پی می برید ...
این یه فرمه که برای جستجو استفاده میکنم ... برای بار اول که باز میشه مشکلی نداره ... ولی بار دوم که بازش میکنم مقادر جدول دیگه درون اون قرار میگیره ولی هنوز بعضی از ستونهای جدول قبلی که از تو دیتا ست درون اون قرار گرفته، باقی مونده ... باید چیکار کنم که هر بار که فرم اجرا میشه دیتاگرید کامل پاک بشه ...

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


txtfsearch.Text = ""
_controls = lblfsearch.Text
If _controls = "JM-n" Or _controls = "JM-f" Or _controls = "JM-t" Then
strsql2 = "select IDCode as [کد اشتراک],Name as [نام],LastName as [نام خانوادگی],Address as [آدرس],Tell as [تلفن] from customer"
ElseIf _controls = "JR-n" Or _controls = "JR-f" Or _controls = "JR-cn" Then
strsql2 = "select ID as [کد],Name as [نام],LastName as [نام خانوادگی],IDCode as [شماره شناسنامه],FName as [نام پدر],MCode as [کد ملی],TCode as [شماره گواهینامه],CarNu as [پلاک خودرو],Tell as [تلفن],Address as [آدرس] from drivers"
End If

Dim da1 As New OleDbDataAdapter(strsql2, strcon)
ds.Clear()
da1.Fill(ds, "tbtsearch")
DGV1.DataSource = ds
DGV1.DataMember = "tbtsearch"
Me.BindingContext(ds, "tbtsearch").Position = 0


حتی دیتاست رو هم clear میکنم ولی بازم جواب نمیده

baran_mehr
جمعه 03 خرداد 1387, 11:29 صبح
قربونت برم چرا اینقدر کار خودتو سخت میکنی و پای دیتاست رو وست میاری اگه یه متغیر از نوع OleDbCommand بسازی این کار اون متغیر های رشته ایت رو انجام میده و خیلی بهترم هست فرض کن میخوای یه عمل select رو انجام بدی و جوابشو بر گردونی داخل یک جدول


cmd.CommandType = CommandType.Text
cmd.CommandText = "select * from table1"
cmd.Connection = cnt
da.SelectCommand = cmd
dt.Clear()
da.Fill(dt)
GridView2.DataSource = dt
حالا تو میتونی چند تا دستور select رو هم پیاده کنی و if بزاری و هیچ مشکلی هم پیش نیاد مثلا بگی:


cmd.CommandType = CommandType.Text
If _controls = "JM-n" Or _controls = "JM-f" Or _controls = "JM-t" Then
cmd.CommandText = "select IDCode as [کد اشتراک],Name as [نام],LastName as [نام خانوادگی],Address as [آدرس],Tell as [تلفن] from customer"
ElseIf _controls = "JR-n" Or _controls = "JR-f" Or _controls = "JR-cn" Then
cmd.CommandText = "select ID as [کد],Name as [نام],LastName as [نام خانوادگی],IDCode as [شماره شناسنامه],FName as [نام پدر],MCode as [کد ملی],TCode as [شماره گواهینامه],CarNu as [پلاک خودرو],Tell as [تلفن],Address as [آدرس] from drivers"
End If

cmd.Connection = cnt
da.SelectCommand = cmd
dt.Clear()
da.Fill(dt)
GridView2.DataSource = dt
برات قسمت تعریف متغییر رو هم میزارم البته باید تو قسمت جنرال یا سراسری بزاریشون:


Dim cnt As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim da As New OleDb.OleDbDataAdapter
Dim dt As New DataTable
داداش گلم فکر کنم این کارتو حل کنه

ali_md110
جمعه 03 خرداد 1387, 12:42 عصر
DS=NEW DATASET نوع جدیدی ازدیتاست را قبل از استفاده دیتاست معرفی کنید

DA1.Dispose در آخر منابع استفاده شده رو دور بریزید
ممکن مشکل شما رو حل کنه

kablayi
شنبه 04 خرداد 1387, 00:48 صبح
DS=NEW DATASET نوع جدیدی ازدیتاست را قبل از استفاده دیتاست معرفی کنید

DA1.Dispose در آخر منابع استفاده شده رو دور بریزید
ممکن مشکل شما رو حل کنه

دست شما درد نکنه ...
گیرش با همون New Dataset رفع شد ... :لبخندساده: :تشویق:

kablayi
شنبه 04 خرداد 1387, 00:57 صبح
روش باران عزیز هم جالبه استفاده از DataTable به جای DataSet...
ولی نمیدونم میشه اونو پیمایش کرد یا نه ... به خاطر همین از DataSet استفاده کردم تا بتونم به راحتی و با استفاده از position کار Navigate رو انجام بدم ... :متفکر:
فکر کنم بشه DataTable رو هم پیمایش کرد ... :متفکر: درسته؟

باز هم ممنونم .... :بوس:

baran_mehr
شنبه 04 خرداد 1387, 07:42 صبح
سلام گلم dateset در واقع مجموعه ای از جدول هاست . ولی datatable مربوط به یک جدول میشه.انجام کارهایی مثل پیمایش و بقیه کارها به سادگی بر روی datatable امکان پذیر هست .و به نظر من دیتاتیبل بهتره
البته نظر من اینه.موفق باشی

karmand
شنبه 26 مرداد 1387, 11:43 صبح
با سلام خد مت باران و تشکر از کد برای فرمهای جستجو
من میخواهم بعر از جستجو و آمدن یک یا چند رکورد در دیتا گرید اگر روی یکی از رکوردها کلیک کردم و ان را انتخاب کردم اطلاعات ان رکورد در بالای دیتاگرید و در تکستهایی که برای این منظور گرفتم انتقال یابد

baran_mehr
شنبه 26 مرداد 1387, 14:12 عصر
سلام عزیز دلمkarmand جان.
برای این کار باید در رویداد CellMouseClick از شئ گرید ، این کد را بنویسی:

dim a as integer=e.Rowindex
Textbox1.text=dt.row.item(a).item("Id").tostring
گلم به جای Id میتونی اسم فیلدت رو بزاری و یا شماره ایندکس فیلدت.
شاد باش و شادی رو هدیه بده....اگه مشکلی بر خوردی بگو