我在数据库中有2个表。一个是用户,另一个是社团。像这样:
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
UserID具有来自Users表的ID的外键。
和2个表单:用户的登录面板和在Datagridview社团中显示的面板。
现在,当我登录用户时,我试图弄明白,只显示具有该用户特定用户ID的社团。
我在第二种形式中使用这种方法来展示特定的社团,但我不知道在等号括号中放什么。我尝试了很多可能性,但没有任何效果......
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);
}
}
}
答案 0 :(得分:0)
您使用的是asp.net会员提供商吗?如果是,那么你可以使用下面的代码来获取id:
<button onclick="showRes('a.m.a. archives of neurology')">convert</button>
答案 1 :(得分:0)
我认为问题是 dgwUser.AutoGenerateColumns = false;
&#xA;&#xA;
private void InitControls()&#xA; {&#XA; dgwUser.AutoGenerateColumns = true;&#xA; }&#xA;
&#xA;&#xA; 或
&#xA;&#xA; private void AddColumns()&# XA; {&#XA;&#XA; var col1 = new DataGridViewTextBoxColumn();&#xA; var col2 = new DataGridViewCheckBoxColumn();&#xA; var col3 = new DataGridViewCheckBoxColumn();&#xA;&#xA; col1.HeaderText =“YourHeaderText”;&#xA; col1.Name =“ID”;&#xA;&#xA; col2.HeaderText =“YourHeaderText”;&#xA; col2.Name =“UserID”;&#xA;&#xA; col3.HeaderText =“YourHeaderText”;&#xA; col3.Name =“Socities”;&#xA;&#xA; dgwUser.Columns.AddRange(new DataGridViewColumn [] {col1,col2,col3});&#xA; }&#XA;&#XA;&#XA;&#XA;&#XA; ...&#XA;列表与LT;社会&GT; ListSociety = db.Societies.Where(s =&gt; s.UserID.Equals(logedUser.ID))。ToList();&#xA; _bs.DataSource = ListSociety;&#xA; dgwUser.DataSource = _bs;&#xA; AddColumns();&#XA; dgwUser.Refresh();&#XA; _bs.ResetBindings(假); &#XA; ...&#XA; 代码>
&#XA;
答案 2 :(得分:0)
我解决了这个问题!这就是我所做的:
在frmLogin.cs
...
internal bool Run(out User user)
{
ShowDialog();
user = _user;
return _Result;
}
...
在frmUsers.cs
private void btnLoad_Click(object sender, EventArgs e)
{
DCApp db = DCApp.NewDC();
User logedUser = db.Users.FirstOrDefault(s => s == Program._user);
List<Society> ListSociety = db.Societies.Where(s => s.UserID == logedUser.ID).ToList();
_bindingSource.DataSource = ListSociety;
dgwUser.DataSource = _bindingSource;
dgwUser.Refresh();
_bindingSource.ResetBindings(false);
}
感谢大家的建议!