Assegna valore Null alla colonna Integer nel DataTable

Ho un datatable con One ColumnName “CustomerID” con Integer DataType. Dinamicamente voglio aggiungere righe al DataTable. Per quello, avevo creato un object DataRow come:

DataTable dt = new DataTable(); DataRow DR = dt.NewRow(); DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); 

Ma se il TextBox contiene una stringa vuota, genera l’errore. In tal caso, desidero assegnare il valore Null al CustomerID. Come fare questo?

Una stringa nulla / vuota è nel formato errato; avresti bisogno di rilevare questo scenario e compensare:

  DR["CustomerID"] = string.IsNullOrWhiteSpace(text) ? DBNull.Value : (object)Convert.ToInt32(text); 
 DR["CustomerID"] = !string.IsNullOrEmpty(TextBox1.Text) ? Convert.ToInt32(TextBox1.Text) : DBNull.Value; 

Ma dovresti controllare anche che il valore sia un intero valido:

 int value; if(int.TryParse(TextBox1.Text, out value)) { DR["CustomerID"] = value; } else { DR["CustomerID"] = DBNull.Value; } 

potresti farlo in questo modo:

 DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ? null : Convert.ToInt32(TextBox1.Text); 

Prima di tutto, ovviamente, il campo deve essere impostato come annullabile nel DB.

Quindi, DBNull.Value su DBNull.Value

Devi prima controllare

 if (TextBox1.Text.Length > 0) { DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); ; } else { DR["CustomerID"] = null; } 
 Int32 Temp = 0; if !(Int32.TryParse(TextBox1.Text,Temp)) DR["CustomerID"] = DBNull.Value else DR["CustomerID"] = Temp 

Puoi usare DBNull.

 DR["CustomerID"] = (TextBox.Text.Length == 0) ? Convert.ToInt32(TextBox1.Text) : DBNull.Value; 
  if (TextBox1.Text.Trim() == String.Empty) { DR["CustomerID"] = null; } else { DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); } 
 DataTable dt = new DataTable(); DataRow DR = dt.NewRow(); if (String.IsNullOrEmpty(TextBox1.Text)) DR["CustomerID"] = DBNull.Value; else DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); 

Se dichiari la variabile Integer come int? viene automaticamente inserito dal compilatore C # e tu puoi assegnare null a quella variabile. Per esempio:

 int? custID = null; 

Spero che aiuti

Quando null non può essere inserito in DR["CustomerID"] , potresti usare (int?)null invece in questo modo:

 DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ? (int?) null : Convert.ToInt32(TextBox1.Text);