سلام
من با خاصیت Find از DataView به مقدار سطر دست یافتم. خاصیت FindRows از DataView یک کلیکسیون بر می گردونه . وقتی راه ساده تر Find هست دیگه راه سخت تر رو نرفتم. به جواب هم رسیدمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
من با خاصیت Find از DataView به مقدار سطر دست یافتم. خاصیت FindRows از DataView یک کلیکسیون بر می گردونه . وقتی راه ساده تر Find هست دیگه راه سخت تر رو نرفتم. به جواب هم رسیدمکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Last edited by قله بلند; 02-01-2009 at 16:22.
سلام
چقدر مرتب و دقیق. واقعاً مهندسی وار کار می کنید.
جناب -H2-
شما از تابع DBSaveAll() استفاده نکردید. یعنی اون رو جایی فراخوانی نکردید.کجا این تابع رو بگذارم؟
سلام
این کتد استفاده نشد.شما از تابع DBSaveAll() استفاده نکردید. یعنی اون رو جایی فراخوانی نکردید.کجا این تابع رو بگذارم؟
اگر بخواهید کاربر بتوانید گراید را مستقیماً ویرایش کند و چیزی به خود گراید اضافه یا کم کند یا سطری را تغییر دهید و...
در نهایت میتوان کل تغییرات را با تابع مذکور به صورت یکجا ذخیره کنید.
(یعنی در همان تئوری دکمه Save دار مفید خواهد بود و باید در رویداد ان دکمه Save این متد فراخانی شود.)
شاید کد شما به نظر شما ساده تر باشد و performance بسیار پایی دارد و کندی سرعت و بازدهی را در تعداد سطرهای بالا احساس خواهید کرد.وقتی راه ساده تر Find هست دیگه راه سخت تر رو نرفتم. به جواب هم رسیدم
ضمناً در برنامه واقعی و در پروزه واقعی دستوررات پیشبینی خطا و try را هم فراموش نکنید.
بهرحال خوشحالم که مشکلتان حل شد و موفق باشید.
با سلام
قطعه کد زیر تعداد سطرهای اضافه شده در dataView رو نشون می ده. مثلاً اگر در اثر عمل درج یک سطر اضافه شده باشه عدد یک رو بر می گردونه و اگر مثلاً دو تا سطر درج شده عدد دو رو نشون می ده.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با عرض سلام و تشکر
من در آدرس زیر ، دو عکس و فایل قبلی را با اضافه کردن دو combobox در یک پوشه قرار دادم.اشکال:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در عکس اول من می خواهم رکوردی را اضافه کنم. در عکس دوم Add انجام شده است. نشانگر به سطر آخر اشاره می کند. مگر نه اینکه سطر تازه درج شده باید در مکان دوم از DataGrid به کاربر نشان داده شود؟
سوال جدید:
همانطور که در فرم می بینید، دو تا کمبو باکس به جمع اشیاء قبلی اضافه شده است. عناصر این دو کمبو باکس دو فیلد نشان داده شده در dataGrid هستند. در combobox1 مقادیر ستون EmployeeId و combobox2 مقادیر ستون TerritoryID ریخته شده است.
من می خواهم عناصر هر دو کمبو باکس به صورت صعودی مرتب شوند و هر گاه کاربر مقداری را از هر کمبویی که مدنظرش بود انتخاب کرد ، سطر متناظر در dataGrid انتخاب شود.
از خاصیت DataView.sort استفاده می کنم ولی در آن واحد فقط یکی از کمبو ها sort می شود. از طرفی وقتی کمبوی مخصوص TerritoryID را sort می کنم ، با انتخاب عنصری از این کمبو دیگر سطر متناظر روی dataGrid انتخاب نمی شود.
شاید سوال کنید که چرا می خواهم این کار را انجام دهم؟
شما فرض کنید که به جای EmployeeId و TerritoryID ، نام و نام خانوادگی افراد درون این کمبو ها بود. برای کاربر همیشه ترتیب عناصر دارای اهمیت است.
شاید کاربر اسم کسی را در یاد داشته باشد ، با انتخاب نامی از کمبو، سطر متناظر از DataGrid مربوطه انتخاب شده و دیگر مشخصات این فرد ظاهر می شود.
وقتی مقادیر کمبو ها مرتب باشند انتخاب کاربر سریعتر خواهد بود و تمایل کاربر به کار با برنامه بیشتر خواهد بود.
با سلام
همین الان یک راه جالب را دیدم و آن اینکه داده های درون کمبو را به ListArray منتقل کنیم و با خاصیت Sort() آن ، داده ها را مرتب کنیم.
هنوز روش کار نکردم ولی چگونه داده های درون کمبو باکس را به ListArray منتقل کنم و چگونه دوباره ListArray را به کمبو باکس تبدیل کنم؟
عجب مطلب جالبی است
جواب:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیددر صورتی که این دستور کار نمی کنه و تولید خطا می کنه.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با روش زیر می شه arraylist رو پر کرد :و از دستور زیر هم به دنبال قطعه کد بالا ایراد می گیره:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدمنابعی که ازشون استفاده کردم:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با این هم می شه، ArrayList رو پر کرد:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدولی وقتی داده ای از کمبو باکس انتخاب می شه، هیچ عکس العملی روی datagrid اتفاق نمی افته.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
با این هم می شه، ArrayList رو پر کرد:ولی باز هم همون نتیجه همیشگی!کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
متاسفانه وقت کم دارد، شرمنده!
به سوال خصوصی یکی از دوستان ساعت 4:10 صبح جواب دادم. بحرحال متاسفم زودتر نوانستم جواب دهم.
=====
کارکرد این دستور شرایط خاصی دارد ضمن اینکه اگر تعداد آیتمهای DataTable زیاد باشد، با کاهش بازدهی مواجه خواهید شد و فائیده اش را برایتان درک هم نمیکنم!قطعه کد زیر تعداد سطرهای اضافه شده در dataView رو نشون می ده. مثلاً اگر در اثر عمل درج یک سطر اضافه شده باشه عدد یک رو بر می گردونه و اگر مثلاً دو تا سطر درج شده عدد دو رو نشون می ده.
نخیر!در عکس اول من می خواهم رکوردی را اضافه کنم. در عکس دوم Add انجام شده است. نشانگر به سطر آخر اشاره می کند. مگر نه اینکه سطر تازه درج شده باید در مکان دوم از DataGrid به کاربر نشان داده شود؟
تا وقتی که گراید یا DataView صراحتاً به sort خاصی تنظیم شوند، این عمل انجام نمیشود.
کنترلر combobox مجهز به خصوصیت Sorted است که باید true اش کنید. یا از دو DataView مجزا استفاده کنید.من می خواهم عناصر هر دو کمبو باکس به صورت صعودی مرتب شوند..
..از خاصیت DataView.sort استفاده می کنم ولی در آن واحد فقط یکی از کمبو ها sort می شود...
ولی یک راست نمیتوانید از مقادیر موجود در DataTable استفاده کنید...
چون مقادیر دو فیلد شما با هم منحصر به فرد هستند (غیر تکراری) و هر کدام جداگانه میتواند بارها تکرار شود، نتیجتاً در کامبوها حالتی پیش می آید که از یک آیتم چندین بارخواهید دید.
برای رفع این مشکل یا باید از LINQ استفاده کنید (که در نسخه 2008 در دسترس است) یا اینکه خودتان دیتاهای غیر تکراری را در collection یا array جداگانه ای برای تغذیه کامبوها ذخیره کنید.
از تابع DataView.Find استفاده کنید و جفت مقادیر کامبو را بدهید تا ایندکس سطر مورد نظر پیدا شود و گراید را به ایندکس مورد نظر ست کنید(اگر ایندکس منفی نباشد)... هر گاه کاربر مقداری را از هر کمبویی که مدنظرش بود انتخاب کرد ، سطر متناظر در dataGrid انتخاب شود...
گمان نمیکنم انتظار داشته باشید برای عملی کدنویسی نکنید و خودش خود به خود انجام شود!!! اگر اینطور باشد که دیگر برنامه نویس نمیخواهد!... با انتخاب عنصری از این کمبو دیگر سطر متناظر روی dataGrid انتخاب نمی شود...
...ولی وقتی داده ای از کمبو باکس انتخاب می شه، هیچ عکس العملی روی datagrid اتفاق نمی افته...
(البته میشد این کار را به نوعی خودکار هم انجام داد ولی باید کلیدتان یکتا میبود یا با یک کنترلر و سطح اضافه در قابل یک کنترلر واحد یکتایش میکردید!
با توجه به وجود دیتا در DataTable کپی گرفتن بیمورد از این دیتا منطقی نیست، ولی نیاز به این کار احتمالاً خواهید داشت، نه به علت مشکل sort که با یک true و false خصوصیت Sorted حل میشود بلکه به دلیل همان دیتاهای تکراری که یک آیتم میتواند چندین بار در کامبو تکرار شود.همین الان یک راه جالب را دیدم و آن اینکه داده های درون کمبو را به ListArray منتقل کنیم و با خاصیت Sort() آن ، داده ها را مرتب کنیم.
هنوز روش کار نکردم ولی چگونه داده های درون کمبو باکس را به ListArray منتقل کنم و چگونه دوباره ListArray را به کمبو باکس تبدیل کنم؟
همانطور که گفتم sort اصلاً مشکلی ندارد و ایجاد نمیکند، مشکل شما که انگار خودتان نمیدانید، دیتاهای تکراری است و شما باید کدی بنویسید که این دیتاهای تکراری را حذف کنددر صورتی که این دستور کار نمی کنه و تولید خطا می کنه.
...با روش زیر می شه arraylist رو پر کرد...
...با این هم می شه، ArrayList رو پر کرد:...
ValueMember در صورتی کار میکند که دیتای منبع شما خصیصه ای با این نام داشته باشد یا خصیصه defualt ای با ورودی string داشته باشد.و از دستور زیر هم به دنبال قطعه کد بالا ایراد می گیره
..ولی باز هم همون نتیجه همیشگی...
شما یا باید آرایه ای از DataRow ها تشکلی دهید و از ValueMember استفاده کنید،
یا آرایه ای از String یا Int تشکیل دهید و از ValueMember استفاده نکنید.
=====
موفق باشید.
با سلام. من از سه تا DataView استفاده کردم تا سه فیلد از جدول Employees را بتونم اداره کنم. در این جدول EmployeeID کلید اصلی است و از نوع Identity است.lastname و FirstName نیز فیلدهای دوم و سوم این جدول را نشان می دهند.من از رویداد SelectedIndexChanged برای دو کمبو باکس حاوی LastName و Firstname استفاده کردم. در اینجا textBox3 به فیلد EmploeeyID اشاره می کند.(نمی دانم شاید اصلا وجودش لازم نباشد)کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در قطعه کد زیر ، وقتی می خواهم سه عنصر EmploeeyID ، FirstName و LastName را پیدا کنم، نمی توانم texbox3.text ار نیز در بین texbox2.text و texbox1.text قرار دهم زیرا در جدول EmploeeyID از نوع Identity است ولی خوبی ان این بود که در جدول EmployeeTerritories فقط از نوع int بود.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حتی اگر از یک dataview نیز استفاده کنم و خاصیت sorted را برای کمبو باکس true کنم ، باز هم همان مشکل باقی است. وقتی از کمبو ها انتخاب می کنم ، سطر متناظرش در datagrid1 انتخاب نمی شود.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)