PDA

View Full Version : لجبازی Datagridview



mohammady2
شنبه 01 تیر 1387, 07:11 صبح
با سلام
من یه برنامه فوق العاده فسقل نوشتم که هر کار کردم از پس datagridview بر نیومدم.

دوستان توجه داشته باشند که تو این برنامه اصلا کیفیت (رعایت قوانیین oop ) مطرح نیست.
منظور این که خودم میدونم چه طوری پارامترهامو به روش آبرومندانه تر مثلا با set و .. به صفحه بعد بفرستم.
مشکل اصلی بگین کجاست؟
القصه:
پارامتر اصلی که از فرم یک میفرستم مقدار فیلد اصلی ( کلید) سطر انتخاب شده در datagridview است. با دابل کلیک یا هر چی ..وقتی فرم دوم باز میشه میخوام.شماره رو دریافت کنه و همون سطر رو با همون شماره در جدول دیگه پیدا کنه.و تو datagridview این فرمم نشون بدم.اما..
مقدار میاد .حتی یه lable هم گذاشتم که مقدار رو بذارم توش و مطمئن باشم اومده .میاد ولی نمیتونم دیتاگریدمو بر اساس اون فیلتر کنم.یعنی دیاتگریدم خالی میشه یعنی با زدن دکمه که دستور فیلتر توشه خالی میشه... ایهاالناس دیوانم کرد کمک کنید



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication8
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'sarparastDataSet.mosh' table. You can move, or remove it, as needed.
this.moshTableAdapter.Fill(this.sarparastDataSet.m osh);
// TODO: This line of code loads data into the 'sarparastDataSet.combo' table. You can move, or remove it, as needed.
this.comboTableAdapter.Fill(this.sarparastDataSet. combo);
}
private void dataGridView1_DoubleClick(object sender, EventArgs e)
{

}
private void button1_Click(object sender, EventArgs e)
{

Form2 frm = new Form2();
frm.t = ((DataRowView)moshBindingSource2.Current)["shomare"].ToString();
frm.ShowDialog();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}


فرم 2


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication8
{
public partial class Form2 : Form
{
public string t = "";

public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'sarparastDataSet.mosh' table. You can move, or remove it, as needed.
this.moshTableAdapter.Fill(this.sarparastDataSet.m osh);
// TODO: This line of code loads data into the 'sarparastDataSet.tblafrad' table. You can move, or remove it, as needed.
this.tblafradTableAdapter.Fill(this.sarparastDataS et.tblafrad);
// TODO: This line of code loads data into the 'sarparastDataSet.combo' table. You can move, or remove it, as needed.
this.comboTableAdapter.Fill(this.sarparastDataSet. combo);


}
private void button1_Click(object sender, EventArgs e)
{

moshBindingSource.Filter = "shomare like '" + t + "%'";
}
}
}


فقط نگین search کن که هر چی مطلب در مورد کار با دیتا گرید تو سایت هست رو حفظ شدم

ASKaffash
شنبه 01 تیر 1387, 10:43 صبح
سلام
مگر فیلد shomare عددی نیست چرا با Like محدودیت ایجاد میکنید؟

mohammady2
شنبه 01 تیر 1387, 11:01 صبح
نه nvarchar انتخاب کردم.محدودیت برای اینکه کاربر برای ویرایش فقط همون سطر رو ببینه

ASKaffash
شنبه 01 تیر 1387, 11:30 صبح
ببین با این شرط هم غلط کار میکنه ?


moshBindingSource.Filter = "shomare like N'" + t + "%'";

mohammady2
شنبه 01 تیر 1387, 16:47 عصر
اشکال در این طور چیزها نیست .معمایی شده..

razavi_university
یک شنبه 02 تیر 1387, 00:23 صبح
دوست عزیز اگر برایتان امکان دارد پروژه را ضمیمه کنید تا بتوان آن را وارسی کرده و خطای آنرا به شما گفت.
یا حداقل پروژه ای شامل همین دو فرم خود

mohammady2
یک شنبه 02 تیر 1387, 15:36 عصر
دوست عزیز اگر برایتان امکان دارد پروژه را ضمیمه کنید تا بتوان آن را وارسی کرده و خطای آنرا به شما گفت.
یا حداقل پروژه ای شامل همین دو فرم خود

http://rapidshare.com/files/124210048/my_prog.rar.html

خدمت شما جناب رضوی .. البته دیتابیسم خیلی نامرتبه .

razavi_university
دوشنبه 03 تیر 1387, 11:21 صبح
ببخشید دیتابیس این برنامه کجاست؟
من پیداش نکردم یا شما نگذاشتین؟
اگر می خوایین دیتابیس رو بگذارین لطفا فقط اسکریپت های ساخت دیتابیس(+جداول و سایر چیزهایی که در دیتابیستون استفاده کردین) رو بگذارید(نه BackUpش)

mohammady2
دوشنبه 03 تیر 1387, 15:13 عصر
واقعا متاسفم .این هم دیتا بیس . جز جدول چیز دیگه ای نداره .فقط شرمنده چون داده ها و فیلدها خیلی نامرتب و ...http://rapidshare.com/files/124431079/db.rar.htmlمتشکر (http://rapidshare.com/files/124431079/db.rar.html%D9%85%D8%AA%D8%B4%DA%A9%D8%B1) جناب رضوی

http://rapidshare.com/files/124431079/db.rar.html

razavi_university
دوشنبه 03 تیر 1387, 20:25 عصر
دوست عزیز لطفا برای آپلود این فایلهای کوچیک از قسمت ضمیمه (در پنجره حالت پیشرفته) استفاده کنین
الان که می خوام از RapidShare دانلود کنم میگه 59 دقیقه صبر کن
برای اصلاح لینک نیازی نبود 2تا پست بزنین همون یکی رو می تونستین ویرایش کنین

mohammady2
سه شنبه 04 تیر 1387, 19:00 عصر
ممنون از نکاتی که یادآور شدید.

mohammady2
چهارشنبه 05 تیر 1387, 13:20 عصر
دوست عزیز لطفا برای آپلود این فایلهای کوچیک از قسمت ضمیمه (در پنجره حالت پیشرفته) استفاده کنین
الان که می خوام از RapidShare دانلود کنم میگه 59 دقیقه صبر کن
برای اصلاح لینک نیازی نبود 2تا پست بزنین همون یکی رو می تونستین ویرایش کنین

هر چند حوصلتون رو احتمالا سر بردم . امیدوارم مشکلی تو برنامه نباشه .البته اگر مشکل بود لطف کنید خودتون با دیتابیس دیگه امتحان کنید .
من اگه بخوام چیزی یاد بگیرم باید تجربه بدست بیارم درسته.

razavi_university
چهارشنبه 05 تیر 1387, 23:10 عصر
سلام
به خاطر امتحانا یکم وقتم محدود شده (شنبه 3تا امتحان دارم توی یک روز):عصبانی++:
فقط چون VisualStudio2005 نداشتم مجبور شدم با 2008 روش کار کنم.(البته فایل اجرایی پروژه روس سیتمتون اجرا میشه فقط نمی تونین پروژه رو با 2005 باز کنین برای کدها هم فایلهای Form1.cs و Form2.cs رو با Notpad باز کنین)
چند تا خط کد بیشتر بهش اضافه نکردم، ببینین متوجه میشین.
فقط واسه انتقال مقدار shomare از فرم 1 به فرم 2 من یک Constructor دیگه واسه Form2 گذاشتم که مقدارارسالی از Form1 رو بگیره (شما از هر روش دیگه ای میتونین استفاده کنین من برای سادگی اینو گذاشتم)
برای Filter هم از خاصیت Filter همون BindingSource استفاده کردم.

راستی
1- برای انتقال مقادیر بین فرمها بهتره از Property استفاده کنین تا متغیرهای Public
2- واسه چی فیلد شماره توی جدولتون بعدش اینهمه Space داشت؟؟:متعجب:

موفق باشید

mohammady2
جمعه 07 تیر 1387, 06:22 صبح
سلام .مجددا
با تشکر فراوان .برنامه شما رو در 2005 نوشتم . و توی تاپیک میزارم تا بقیه دوستان هم بتونند استفاده کنند.

البته تغییرات کمی هم دادم:

1.با دابل کلیک رو دیتا گرید فرم دوم باز میشه و اطلاعات مربوط به اون رکورد رو از جدول دیگه با همین فیلد مشترک در فرم دوم نمایش میده.

2. برای اینکه دوباره بانک رو آپ نکنم چون بقیه جداول دیتابیس مشکل دارند خودتون برای اجرای برنامه در دیتابیس جدولی به نام test با تنها یک ستون (shomare) از نوع nvarchar ایجاد کنید و تعدادی از مقادیر شماره در جدول mosh رو در این ستون در جدول test بنویسید تا مقادیر مشترکی دو جدول داشته باشند.

امیدوارم در امتحاناتتون موفق باشید

mohammady2
دوشنبه 10 تیر 1387, 07:25 صبح
این هم برنامه 2005 vs