2017-04-04 56 views
2

我有一個帶有參數的gridview。它綁定到一個SQL查詢的數據源。當參數的值爲空時,查詢將在SQL Server中執行時返回行。當我嘗試通過下面這行代碼傳遞參數null值時,我沒有得到任何結果。Asp.Net C#如何將空值參數傳遞給數據源

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

查詢字符串不存在,因此它將一個空值傳遞給FormDS數據源。 SelectParameters表示它是一個空值。

所以我試着給它一個空字符串。

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

在ASP.NET

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

的標記下面還有沒有結果。

我在配置數據源的測試查詢部分中使用以下值測試了數據源並獲取了行。

enter image Configure Data Source

我缺少的是關於傳遞空值到一個SqlDataSource的SelectParameters?

+2

你試過DbNull.Value? – toha

+0

如何使用DbNull?我只是試了一下。不能將類型'System.DBNull'隱含轉換爲'字符串'。我試過DbNull.ToString,因爲它是一個空字符串,並且不起作用。 –

+1

答案可以在這裏找到:[堆棧溢出:通過sqldatasource傳遞null值到數據庫。](http://stackoverflow.com/questions/14858769/aspcontrolparameter-pass-null-value-to-db-via-sqldatasource) –

回答

1

試試這個:

  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

雖然我確定您的解決方案有效,但並非我尋找的確切解決方案。 ASP.NET的SqlDataSource標記中的CancelSelectOnNullParameter =「false」。 –

相關問題