2016-07-29 11 views
1

Ich verwende eine sqldatasource, um die Gridview zu binden. Wenn ich auf die Suchschaltfläche klicke, verwende ich den folgenden Code, um die Gridview mit einer anderen gespeicherten Prozedur sqldatasource erneut zu binden. Wenn ich das Suchfeld lösche und erneut auf die Suche klicke, möchte ich, dass die Gridview an die ursprüngliche Datenquelle bindet. Aber ich bekomme immer den Fehler "Prozedur sp_get_ecr_list hat keine Parameter und Argumente wurden angegeben." Irgendwelche Gedanken?Gridview Databinding Problem nach dem Ausräumen Suchfeld

 if (searchbox.Value.Trim() != "") 
     { 

      SqlDataSource1.SelectCommandType = SqlDataSourceCommandType.StoredProcedure; 
      SqlDataSource1.SelectCommand = "sp_get_ecr_list_filter"; 
      Parameter d = SqlDataSource1.SelectParameters["devNumber"]; 
      SqlDataSource1.SelectParameters.Remove(d); 
      SqlDataSource1.SelectParameters.Add("devNumber", searchbox.Value); 
      GridView1.DataBind(); 
     } 
     else 
     { 
      GridView1.DataBind(); 
     } 

Antwort

2

Sie könnten die Parameterliste in Ihrer else Klausel löschen, bevor die Datenbindung:

if (!string.IsNullOrWhiteSpace(searchbox.Value)) 
{ 
    ... 
    SqlDataSource1.SelectParameters.Add("devNumber", searchbox.Value); 
} 
else 
{ 
    SqlDataSource1.SelectCommand = "sp_get_ecr_list"; // Probably already set earlier in your code 
    SqlDataSource1.SelectParameters.Clear(); 
} 

GridView1.DataBind(); 
0

So werden Sie sagen, dass, wenn Sie in das Suchfeld zu löschen und klicken Sie auf, geben Sie Ihren Gleichheitsvergleich funktioniert nicht wie beabsichtigt und damit in die if-Anweisung fallen?

Versuchen Sie stattdessen:

if (string.IsNullOrEmpty(searchbox.Value)) 
    { 
    // Data bind 
    } 
+0

Sorry, wenn ich auf diese nicht klar bin. Ich meine, als ich etwas eintippte und es suchte, ist es in Ordnung. Nachdem ich das Suchfeld gelöscht habe und erneut auf "Suchen" klicke, möchte ich, dass die Daten wieder in die ursprüngliche Bindung geladen werden. Aber ich habe den Fehler gefunden. – TaroYuki