簡體   English   中英

asp.net gridview問題

[英]problem with asp.net gridview

我在刪除gridview時遇到問題。我有一個表名Doctor,其ID,名稱,地址,電話.Id是自動生成的字段。在我在gridview中顯示時添加數據后,如果從gridview中刪除任何ID,那么如果我再添加任何新的從表格的細節開始,從新編號開始。我的意思是,如果我刪除最后一個ID號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});
  }
}

這完全是正常的數據庫行為,與GridView沒有任何關系。 如果您對自動生成的(標識)列中的間隙存在問題,請使用自己的邏輯來生成唯一ID,或者使用自定義SQL腳本檢查Identity值中的間隙並填補這些間隙。

Transact-SQL參考中的示例B顯示了一種執行此操作的方法。

因此,該ID由數據庫創建(自動編號)。 使用ID 5時,它用完了。 這是正常現象。

正如其他人指出的那樣,如果這是從數據庫自動生成的ID,則一旦使用它就不會重新生成,每個ID是唯一的,無論數據是否仍然存在。 如果對ID進行了回收,您可能會遇到外來引用的問題,這些引用可能指向具有該ID的舊項目,而現在會指向具有重用ID的新記錄。

通常,您無論如何都不會向用戶公開ID,因此這不是問題。

您不應該依賴於自動生成的ID序列是否有序或沒有間隔。 正如其他人指出的那樣,對於自動生成的ID,您看到的行為完全是正常行為,否則,您將需要跳很多圈。 如果需要按插入順序對ID進行排序,則應放入自動生成的日期/時間字段,然后選擇該字段排序的數據(並為其編制索引)。 這樣,如果您決定從數字ID切換到GUID或其他ID格式(排序順序與插入順序不同),則仍然可以正確排序數據。 如果每個都需要一個“下訂單”,請在選擇按日期排序時自動生成該(例如行號)。 這樣,即使以后刪除記錄,您仍將具有嚴格的數字順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM