データベースに2つのテーブルがあります。 1つはユーザと、もう1つは社会と一緒です。このようなもの:C#テーブルから特定の行を表示
Users table: Societies table:
ID User Pass ID UserID Societies
1 Mark 123 1 1 Pepsi
2 John abc 2 1 Lays
3 Paul a1b 3 2 Unilever
4 3 Nestle
ユーザーIDには、ユーザーテーブルからIDへの外部キーがあります。
2つのフォーム:ユーザー用のログインパネルと、Datagridviewソーシャルで表示するログインパネル。
ここで、私はユーザーと一緒にログインしているときに、特定のユーザーIDを持つSocietiesのみを表示しようとします。
私は特定の社会を示すためにこの方法をSecond Formで作ったが、私は何を括弧で囲むべきか分からない。あなたはいくつかのヒントを持っている場合は、私にパスを与えてください...
private void btnLoad_Click(object sender, EventArgs e)
{
DCApp db = DCApp.NewDC();
User logedUser = db.Users.FirstOrDefault(s => s == Program._us);
List<Society> ListSociety = db.Societies.Where(s => s.UserID.Equals(logedUser)).ToList();
_bs.DataSource = ListSociety;
dgwUser.DataSource = _bs;
dgwUser.Refresh();
_bs.ResetBindings(false);
}
を私は多くの可能性を試してみましたが、何も働きました。私のコードの
レクリエーション:
Program.csの
using System;
using System.Windows.Forms;
namespace Users
{
static class Program
{
public static User _us;
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
frmLogin f = new frmLogin();
if (f.Run(out _us))
{
Application.Run(new frmUsers());
}
else
{
Application.Exit();
}
}
}
}
frmLogin.cs
namespace Users
{
public partial class frmLogin : Form
{
bool _Result = false;
User _user;
public frmLogin()
{
InitializeComponent();
}
internal bool Run(out User us)
{
us = _user;
ShowDialog();
return _Result;
}
private void btnLogin_Click(object sender, EventArgs e)
{
if (cmdPassword.Text.Length == 0 || cmdUser.Text.Length == 0)
{
errH.SetError(btnLogin, "!");
return;
}
using (DCApp db = DCApp.NewDC())
{
List<User> logInP = db.Users.Where(s => s.UserPassword.ToLower().Equals(cmdPassword.Text.ToLower().Trim()) && s.UserName.ToLower().Equals(cmdUser.Text.ToLower())).ToList();
if (logInP.Count == 0)
{
_Result = false;
}
else if (logInP.Count > 1)
{
_Result = false;
}
else
{
_Result = (bool) logInP.FirstOrDefault().IsActive;
_user = logInP.First();
}
}
Close();
}
private void btnCancel_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
frmUsers.cs
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Windows.Forms;
namespace Users
{
public partial class frmUsers : Form
{
BindingSource _bs = new BindingSource();
public frmUsers()
{
InitializeComponent();
InitControls();
}
private void InitControls()
{
dgwUser.AutoGenerateColumns = false;
}
private void btnLoad_Click(object sender, EventArgs e)
{
DCApp db = DCApp.NewDC();
User logedUser = db.Users.FirstOrDefault(s => s == Program._us);
List<Society> ListSociety = db.Societies.Where(s => s.UserID.Equals(logedUser)).ToList();
_bs.DataSource = ListSociety;
dgwUser.DataSource = _bs;
dgwUser.Refresh();
_bs.ResetBindings(false);
}
}
}
「_bs」とは何ですか? – Eldeniz
'gwUser.DataSource = ListSociety'を確認できますか – Eldeniz
' .Where(s => s.UserID.Equals(UserIdOfLoggedInUser)) 'のようなものを使う必要があります。しかし、 'UserIdOfLoggedInUser'を見つける方法はあなたのコードをすべて見ないためです。 –