проблема с gridview asp.net - PullRequest
       12

проблема с gridview asp.net

0 голосов
/ 15 февраля 2009

У меня проблема с удалением gridview. У меня есть имя таблицы Doctor with Id, Name, Address, Phone.Id - автоматически сгенерированное поле. После добавления данных когда я отображаю в gridview тогда, если удалить любой идентификатор из gridview Опять же, если я добавлю какие-либо новые детали из формы, начиная с новый номер. Я имею в виду, если я удаляю последний идентификатор № 5, то снова, если я добавить любого нового доктора, который принимает значение id 6, а не из 5. Мой запрос должен начать снова с 5. Вот мой код. Пожалуйста, помогите мне.

public class Doctor
{  
  public int Id { get; set; }
  public string Name { get; set; }
  public string Address { get; set; }
  public string Phone { get; set; }
}

public static class DoctorDataLayer
{
  public static void AddDoctor(Doctor doctor) 
  {
    string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; // JohannesH: Changed from .ToString() to .ConnectionString
    using(var connection = new SqlConnection(connectionString))
    {
      using (var command = new  SqlCommand("insert into doctor values(@name,@address,@phone)", connection))
      {      
        command.Parameters.AddWithValue("@name", doctor.Name);
        command.Parameters.AddWithValue("@address", doctor.Address);
        command.Parameters.AddWithValue("@phone", doctor.Phone);
        connection.Open();
        command.ExecuteNonQuery();
        connection.Close();
      }
    }
  }
}
public static class DoctorBusinessLayer
{
  public static void CreateDoctor(string name, string address, string phone) 
  {
    DoctorDataLayer.AddDoctor(new Doctor {Name = name, Address = address, Phone = phone});
  }
}

Ответы [ 4 ]

4 голосов
/ 15 февраля 2009

Это совершенно нормальное поведение базы данных и не имеет ничего общего с вашим GridView. Если у вас есть проблема с пробелами в автоматически сгенерированных (идентификационных) столбцах, либо используйте собственную логику для генерации уникальных идентификаторов, либо используйте пользовательские сценарии SQL для проверки пропусков в значениях идентификаторов и их заполнения.

Пример B в справочнике Transact-SQL показывает способ сделать это.

1 голос
/ 15 февраля 2009

Вы не должны зависеть от того, упорядочены ли автоматически сгенерированные идентификаторы или нет пробелов. Как уже отмечали другие, поведение, которое вы видите, является совершенно нормальным поведением для автоматически сгенерированного идентификатора, и в противном случае вам придется перепрыгивать через множество обручей. Если вам нужно, чтобы идентификаторы были упорядочены по последовательности вставки, вы должны вставить автоматически сгенерированное поле даты / времени, а затем выбрать данные, упорядоченные по этому полю (и проиндексировать их). Таким образом, если вы когда-нибудь решите переключиться с числового идентификатора на GUID или какой-либо другой формат идентификатора, в котором порядок сортировки отличается от порядка вставки, ваши данные будут по-прежнему упорядочены правильно. Если вам нужно иметь «порядок размещения» для каждого, сгенерируйте его автоматически (скажем, число), когда вы выбираете упорядоченный по дате. Таким образом, у вас все еще будет строгий порядок, даже если записи будут удалены позже.

1 голос
/ 15 февраля 2009

Как отметили другие, если это автоматически сгенерированный идентификатор из БД, то после его использования он не будет регенерирован, каждый идентификатор уникален независимо от того, существуют ли данные или нет. Если идентификаторы были переработаны, вы могли бы столкнуться с проблемами с внешними ссылками, которые могли указывать на старый элемент с этим идентификатором, а теперь указывали бы на новую другую запись с повторно использованным идентификатором.

Обычно вы все равно не предоставляете пользователю идентификаторы, поэтому это не проблема.

1 голос
/ 15 февраля 2009

Таким образом, Id создается базой данных (autonumber). Когда используется идентификатор 5, он исчерпан. Это нормальное поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...