C#显示表中的某些行

时间:2016-11-23 08:27:57

标签: c# winforms linq datagridview

我在数据库中有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);    
  }
 }
}

3 个答案:

答案 0 :(得分:0)

您使用的是asp.net会员提供商吗?如果是,那么你可以使用下面的代码来获取id:

<button onclick="showRes('a.m.a. archives of neurology')">convert</button>

答案 1 :(得分:0)

我认为问题是 dgwUser.AutoGenerateColumns = false;

&#xA;&#xA;

&#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);    
  }

感谢大家的建议!