例如:如果管理员可以查看网格中的所有数据。当以教师身份登录时,他/她只能查看他/她在网格中的数据,其余部分必须隐藏给他们。通过更改sql查询我能够基于facultyID
(主要)进行过滤,但是由于while循环显示网格中的位置发生了变化。建议我一个解决方案
private void FillDisGrid()
{
int a1 = 0;
int colNo = 1;
if (conn.State == ConnectionState.Open) { conn.Close(); }
conn.Open();
SqlCommand cmd = new SqlCommand();
SqlDataReader dr;
cmd.Connection = conn;
cmd.CommandText = "select Subjectname,FacultyID from timetabletab where FacultyID='" + comboBox2.Text + "' and semester='" + comboBox3.Text + "' order by rno";
dr = cmd.ExecuteReader();
while (dr.Read())
{
if (colNo % 6 == 0) { colNo = 1; a1 = a1 + 2; }
dataGridView1.Rows[a1].Cells[colNo].Value = dr.GetValue(0).ToString();
dataGridView1.Rows[a1 + 1].Cells[colNo].Value = dr.GetValue(1).ToString();
colNo++;
}
}
答案 0 :(得分:0)
所以你想要一个可以显示不同数据和标题的网格,这取决于哪个人正在查看?如果是这样,您可以尝试这样做,当您从数据库获取数据时,让它返回到数据表或自定义对象中,将其绑定到网格。但是设置网格AutoGenerateColumns = false,因此它只会根据绑定到它的内容生成标题。