2013-03-22 3 views
0

Например: если администратор может просматривать все данные в сетке. при регистрации в качестве преподавателя он может просматривать только свои данные в сетке, а остальные должны быть скрыты от них. Изменив запрос sql, я могу фильтровать на основе facultyID (первичный), но при отображении позиции в сетке изменяется из-за цикла while. Предложите мне решениеЕсть ли способ исправить положение данных в datagridview?

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

Я не понимаю, что должен делать код. Пример в реальном мире был бы приятным. – Alex

+0

Представьте себе школьное расписание. Если я ученик, я могу просмотреть весь мой график. Если я учитель, я могу просматривать только мои сюжеты в расписании. Здесь я могу легко фильтровать, просто изменив query.But при отображении позиции субъекта также меняются. Как сохранить это исправление – user2189778

ответ

0

Итак, вы хотите, чтобы одна сетка могла отображать разные данные и заголовки на основе того, какой человек просматривает? Если это так, вы можете попробовать это, когда вы получите данные из базы данных, верните ли вы в объект данных или пользовательский объект, привяжите его к сетке. но установите сетку AutoGenerateColumns = false, поэтому она будет генерировать только заголовки на основе того, что было связано с ней.