Дублирование строк Gridview C#
Привет,
У меня есть веб-страница, которая позволяет студенту регистрировать курсы, и я хочу отобразить сообщение об ошибке, если студент выберет курс, который был пройден ранее и уже находится в gridview.
Все в коде работает нормально,но когда я использую этот цикл
for (int i = 0; i < GridView1.Rows.Count;i++)код проверяет только первую строку.
Как я могу заставить цикл for пройти через все строки gridview
Что я уже пробовал:
protected void Button1_Click(object sender, EventArgs e) { for (int i = 0; i < GridView1.Rows.Count;i++) { if (GridView1.Rows[i].Cells[4].Text == DropDownList2.SelectedValue.ToString()) { //display error message. } else { string stid = Label1.Text; string coursecode = DropDownList2.SelectedValue.ToString(); string docid = lblDocID.Text; string semester = lblSemester.Text; string sessiondays = lblSessionDays.Text; string days = lblDays.Text; string timing = lblTiming.Text; string startid = lblStartTime.Text; string endtime = lblEndTime.Text; string roomid = lblRoomID.Text; SqlConnection ConnString = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); String query = "insert into Registration values (@St_ID, @Semester, @CourseCode, @Doc_ID, @SessionDays, @Days, @Timing, @StartTime, @EndTime, @RoomID)"; SqlCommand cmd = new SqlCommand(query); cmd.Connection = ConnString; cmd.Parameters.AddWithValue("@St_ID", stid); cmd.Parameters.AddWithValue("@Semester", semester); cmd.Parameters.AddWithValue("@CourseCode", coursecode); cmd.Parameters.AddWithValue("@Doc_ID", docid); cmd.Parameters.AddWithValue("@SessionDays", sessiondays); cmd.Parameters.AddWithValue("@Days", days); cmd.Parameters.AddWithValue("@Timing", timing); cmd.Parameters.AddWithValue("@StartTime", startid); cmd.Parameters.AddWithValue("@EndTime", endtime); cmd.Parameters.AddWithValue("@RoomID", roomid); ConnString.Open(); cmd.ExecuteNonQuery(); ConnString.Close(); Response.Redirect("~/StudentAddDropCourse.aspx"); } } }
Angelo L
Используя отладчик, вы проверили строки, которые сравниваете в операторе if, GridView1. Rows[i].Клетки[4].Текст и DropDownList2.SelectedValue.Метод toString()?
R.M49
да, проблема в том, что цикл for проверяет только первую строку, он не проходит через все строки.
Angelo L
Мне кажется, что ваш код добавляет данные каждый раз, когда сравнение терпит неудачу внутри цикла, но поскольку вы не прерываете цикл, вы продолжаете итерацию. Для оператора if после отображения сообщения об ошибке вы должны прерваться, чтобы выйти из цикла for. Вы не должны делать оператор else, если вы уже не просмотрели все строки, то есть вы перебрали их и не вошли в Оператор if и не сломались. Поэтому измените else на что-то вроде 'else if (i == GridView1.Rows.Граф-1)".
R.M49
ууууу, теперь он работает, не могли бы вы написать его как soultion, чтобы я мог принять его.
Angelo L
Рад был помочь.