Ich habe 2 Tabellen in einer Datenbank. Einer ist mit Benutzern und ein anderer mit Gesellschaften. Etwas wie dieses:C# Zeige bestimmte Zeilen aus einer Tabelle
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
BenutzerID haben einen Fremdschlüssel zu ID von Benutzer Tabelle.
Und 2 Formen: Ein Login-Panel für Benutzer und man in einer Datagridview Gesellschaften anzeigen.
Jetzt versuche ich herauszufinden, wenn ich mich mit einem Benutzer anmelde, um nur Gesellschaften mit der spezifischen UserID für diesen Benutzer anzuzeigen.
Ich habe diese Methode in der zweiten Form gemacht, um bestimmte Gesellschaften zu zeigen, aber ich weiß nicht, was ich in Equals Klammern setzen soll. Ich habe viele Möglichkeiten ausprobiert, aber nichts hat funktioniert ...
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);
}
Wenn Sie einige Tipps haben, bitte, geben Sie mir einen Weg.
Rest meines Code:
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);
}
}
}
Was ist '_bs'? – Eldeniz
Können Sie 'gwUser.DataSource = ListSociety' überprüfen – Eldeniz
Sie müssen etwas wie' .Where (s => s.UserID.Equals (UserIdOfLoggedInUser)) 'verwenden. Aber wie Sie "UserIdOfLoggedInUser" finden, liegt an Ihnen, weil wir nicht Ihren gesamten Code sehen. –