C# dataGridView1不显示指定表中的数据

C# dataGridView1不显示指定表中的数据,c#,sql,asp.net,ado.net,C#,Sql,Asp.net,Ado.net,这个代码块应该是一个注册表单。这个项目有几个方面 表格需要相互连接。当您运行项目时 登录表单首先出现在屏幕上,其两个文本框被标记为 当用户名、密码和两个按钮登录时,注册。之后 注册过程,将您的所有信息以插入方式发送到 在数据库中输入USERStable命令时,必须键入 用户名和密码正确输入显示的文本框, 它们应该匹配以下GetString1和GetString2,以及 然后按注册按钮bam,您应该有联系人表单 出现在屏幕上。联系人窗体有一个dataGridView,它是 应该显示USERStab

这个代码块应该是一个注册表单。这个项目有几个方面 表格需要相互连接。当您运行项目时 登录表单首先出现在屏幕上,其两个文本框被标记为 当用户名、密码和两个按钮登录时,注册。之后 注册过程,将您的所有信息以插入方式发送到 在数据库中输入USERStable命令时,必须键入 用户名和密码正确输入显示的文本框, 它们应该匹配以下GetString1和GetString2,以及 然后按注册按钮bam,您应该有联系人表单 出现在屏幕上。联系人窗体有一个dataGridView,它是 应该显示USERStable拥有的所有行。为了 防止用户使用错误的用户名和密码进入,如果 while循环中的语句。这很有效,但当你进去的时候, dataGridVew不显示任何信息。但是,如果没有while循环,它确实可以。 我想不出问题出在哪里的原因。有吗 建议

有一件事我忘了指出。我还创建了一个名为USERS的类 字段和属性:

字符串用户名

字符串密码

在顶部,你可以看到我已经创建了一个引用我们的对象


您是要为当前用户名选择唯一的信息,还是当前用户名应该从users表中获取所有记录?users类中只有两个字段,因为我登录时只需要这两个数据。我使用*select*命令检索所有行,因为它们必须显示在dataGridviewer中,但我在IF语句的登录表单类中只使用了其中两行。您不需要while循环来填充dataTable。尝试调用dataTable.Loaddr并退出while循环。一旦数据表被填充,您就可以循环它来决定是否显示联系人表单和/或dataGridView。
public partial class LOGIN : Form
    {
        public LOGIN()
        {
            InitializeComponent();
        }
USERS us = new USERS();
 private void button1_Click(object sender, EventArgs e)
            {
               CONTACTS contact = new CONTACTS(); //FORM CONTACT
                SqlConnection con = new SqlConnection();
                con.ConnectionString = @"Data Source = DESKTOP-9I0BNAS\SQLEXPRESS; Initial Catalog = CAVID; Integrated Security = True";
                con.Open();

                SqlCommand cmd = new SqlCommand("Select * FROM  users", con);

                if (con.State == ConnectionState.Closed)
                {
                    con.Open();
                }


                SqlDataReader dr = cmd.ExecuteReader();
                DataTable dataTable = new DataTable();

                while (dr.Read())
                {
                    us.Username = dr.GetString(1);
                    us.Password = dr.GetInt32(2).ToString();
                    if(us.Username == textBox1.Text &&
                          us.Password == textBox2.Text)

                    {
                        contact.Show();
                        dataTable.Load(dr);
                        contact.dataGridView1.DataSource = dataTable;            
                        this.Hide();
                        break;
                    }

                }         
            }
        }