В моей веб-странице есть только выпадающий список с идентификатором ученика и сеткой с изображениями учеников. Если я выбираю ученика, Grid View должен отображать все изображения выбранного ученика. Проблема заключается в том, что когда я выбираю ученика, мой сетчатый вид пропускает первые два значения. Я имею в виду, если есть 6 изображений, сетка показывает только 4 изображения. Вот мой код:mysql select query skipping значения первой строки
private void BindGrid()
{
MySqlConnection con = new MySqlConnection(constr);
MySqlCommand cmd = new MySqlCommand("SELECT * FROM images where Image_ID in (" + String.Join(",", getImage_ID()) + ")", con);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
gvImages.DataSource = dt;
gvImages.DataBind();
}
private List<int> getImage_ID()
{
List<int> i = new List<int>();
MySqlConnection con = new MySqlConnection(constr);
con.Open();
string query = "Select Come_Image_ID1, Leave_Image_ID from register where Students_ID='" + getStudents_ID() + "' AND Come_Image_ID IS NOT NULL AND Leave_Image_ID IS NOT NULL";
MySqlCommand cmd = new MySqlCommand(query);
cmd.Connection = con;
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
foreach (DbDataRecord s in reader)
{
i.Add(s.GetInt32(0));
i.Add(s.GetInt32(1));
}
}
reader.Close();
return i;
}
Что является лучшей практикой для кодирования этого вопроса?
Я не использую Java, поэтому это просто предположение: избавиться от цикла while. «Foreach» уже перебирает все строки. 'reader.Read()' извлекает первую строку, поэтому цикл 'foreach' начинается со следующей строки. – Barmar
Это объясняет, почему он пропускает первый ряд, я не уверен, почему он пропускает второй. – Barmar