من یک توی پروژه کلا سه تا فرم دارم و یک دیتابیس دارم که دو تا جدول داره یکی user و یکی اطلاعات مربوط به هر user
سه تا فرم هم یکی لاگین یکی ثبت نام و دیگری اطلاعات هر فرد و توی یک gridview نمایش میده
حالا سوالی که دارم اینه که من چطوری کد بنویسم تا هر فرد که لاگین میشه فقط اطلاعات خودش رو ببینه
من خودم یک سری کارهایی رو انجام دادم
دو تا query از هر جدول بر اساس usrid که داشتن ایجاد کردم
بعد گفتم که اگر این دو تا userid ها با هم برابر بود بعد بیا gridview رو پر کن ولی باز هم همه اطلاعات و نشون میده
این کد ها رو توی فرم load فرمی که gridview داره نوشتم
DataSet1TableAdapters.UserPasstbTableAdapter up = new DataSet1TableAdapters.UserPasstbTableAdapter();
DataSet1TableAdapters.UserTableAdapter u = new DataSet1TableAdapters.UserTableAdapter();
var userid = u.GetDataByUserId().UserIdColumn;
var userpassid = up.GetDataByUserId().UserIdColumn;
if (userid == userpassid)
{
this.userPasstbTableAdapter.Fill(dataSet1.UserPasstb);
}
ابتدا یک کلاس به نام Global ایجاد کرده و درون آن یک فیلد به صورت زیر تعریف کنید
public static int userid;
پس از لاگین کد کاربر را درون این فیلد ذخیره کنید
Global.userid=کد کاربر;
درون Dataset یک درخواست ایجاد و نام ان را FillByUserId قرار دهید
سپس یک datagrid درون صفحه قرار داده و اتصال ان را به جدول مورد نظر برقرار کرده و کد تولید شده در رویداد Load فرم را به صورت زیر تغییر دهید
this.studentTableAdapter.FillByUserId(this.dataSet1.Student,Global.userid);
موفق باشید
یه سوال دیگه که پیش اومده برام اینه که مقدار Global.UserId باید برابر چه کدی باشه اینجاشو متوجه نشدم و باید توی فرمی که مشخصات شخص و نشون می ده قبل از دستور
this.studentTableAdapter.FillByUserId(this.dataSet1.Student,Global.userid);
بیاد؟
یا توی فرم لاگین ؟
وقتی لاگین میکنید کد کاربر را قبل از باز شدن فرم اصلی برنامه در Global.userid قرار دهید
ابتدا جدولی به نام لاگین به 3 فیلد زیر بسازید
در Dataset خود یک درخواست به نام getDataByUserPas ایجاد و در جلوی فیلدهای username و password علامت ؟ قرار دهید
در رویداد کلیلک دکمه لاگین ایتدا یک شی از کلاس DataSetTableAdapterو جدول لاگین مثلا به نام user ایجاد کنید
سپس
var dt=user.getDataByUserPass(textBox1.Text,textBox2.Text);
if(dt.Rows.Count==1)
{
Global.Userid=ConvertToInt32(dt.Rows[0]["userid"]);
}
خیلی ممنون بابت پاسخگویی به سوالات
من برای اضافه کردن رکورد جدید به datagridview هم مشکل دارم
به جای کد زیر
this.userPasstbTableAdapter.Fill(this.dataSet1.UserPasstb);
برای سیو کردن add و edit کد زیر را نوشتم ولی باز هم درست کار نمیکنه
this.userPasstbTableAdapter.FillByUserId(this.dataSet1.UserPasstb, Global.userid);
یعنی مقداری که من اضافه کردم و نادیده می گیره و هر چیزی که قبلا توی دیتابیس وجود داشته رو نمایش می ده
برای رفع این مشکل باید چه کار کنم؟
موقع اضافه کردن رکورد جدید بابد مقدار موجود در Global.userid را هم درون جدول اضافه کنید. سپس بعد ار اظافه کردن رکورد مجددا فرمان زیر را قرار دهید
this.userPasstbTableAdapter.FillByUserId(this.dataSet1.UserPasstb, Global.userid);
ممنون بابت پاسختون
درست شد
جهت درج پاسخ ابتدا باید وارد شوید و یا ثبت نام نمایید
برکشت به انجمن