2017-04-04 2 views
2

Ich habe eine Gridview mit einem Parameter. Es ist an eine Datenquelle gebunden, die eine SQL-Abfrage ist. Die Abfrage gibt Zeilen zurück, wenn sie in SQL Server ausgeführt wird, wenn der Wert des Parameters null ist. Wenn ich versuche, den Parameter über die folgende Codezeile einen Nullwert zu übergeben, erhalte ich keine Ergebnisse.Asp.Net C# Wie übergeben Null Wert Parameter an Datenquelle

FormDS.SelectParameters["ServiceFormCompletedId"].DefaultValue = Request.QueryString["sfcId"]; 

Die Abfragezeichenfolgeflag nicht so existiert es übergibt einen Nullwert an die FormDS Datenquelle. Die SelectParameters sagten, es sei ein Nullwert.

Also versuchte ich es eine leere Zeichenfolge geben.

FormDS.SelectParameters["ServiceFormCompletedId"].DefaultValue = ""; 

mit folgendem im Markup von ASP.NET

<asp:Parameter Name="ServiceFormCompletedId" ConvertEmptyStringToNull="true" /> 

Es gab auch keine Ergebnisse.

Ich habe die Datenquelle mit den folgenden Werten im Abschnitt Testabfrage der Datenquelle konfigurieren getestet und Zeilen zurückgeliefert.

enter image Configure Data Source

Was ich über die Weitergabe Nullwerte zu den Select eines SqlDataSource bin fehlt?

+2

Haben Sie DBNull.Value versucht? – toha

+0

Wie benutze ich DbNull? Ich habe es gerade ausprobiert. Kann den Typ 'System.DBNull' nicht in eine 'Zeichenfolge' konvertieren. Ich habe versucht DbNull.ToString und das funktioniert nicht, da es eine leere Zeichenfolge ist und das nicht funktioniert. –

+1

Die Antwort finden Sie hier: [Stack Overflow: Übergeben Sie null Wert an DB über sqldatasource.] (Http://stackoverflow.com/questions/14858769/aspcontrolparameter-pass-null-value-to-db-via-sqldatasource) –

Antwort

1

Try this:

  SqlCommand cmd = new SqlCommand("ProcedureName"); 
      cmd.Connection = new SqlConnection("yourConnString"); 
      cmd.CommandType = CommandType.StoredProcedure; 

      cmd.Parameters[0] = new SqlParameter("YourParaameter", SqlDbType.NVarChar); 
      cmd.Parameters[0].Value = DBNull.Value; 
      cmd.Parameters[0].Direction = ParameterDirection.Input;   

      cmd.ExecuteNonQuery(); // or any other command that you want to execute 
+0

Obwohl ich sicher bin, dass Ihre Lösung funktioniert, war es nicht die exakte Lösung, nach der ich gesucht habe. CancelSelectOnNullParameter = "false" im SqlDataSource-Markup von ASP.NET funktioniert. –

Verwandte Themen