2012-03-30 23 views
0

Ich habe eine Suche in einer Rasteransicht, die die Ergebnisse begrenzt. Ich möchte, dass die Rasteransicht mit allen Einträgen neu gefüllt wird, wenn a. das Suchfeld ist leer oder b. Der Benutzer drückt eine Schaltfläche zum Aktualisieren.Rasteransicht nach der Suche aktualisieren

StaffDetailsStaffGridView.DataBind() funktioniert offensichtlich nicht

Wie mache ich das richtig?

Antwort

0

Sie sollten die Datenquelle erneut abrufen und als DataSource festlegen und dann erneut binden.

So etwas wie diese

Protected Sub btnRefreshSearch_Click(sender As Object, e As EventArgs) Handles btnRefreshSearch.Click 

    Dim searchKey as String 
    searchKey =txtFnameSearch.Text.Trim() 
    Dim staffSearchREsults=MyService.GetSearchResults(searchKey) 
    StaffDetailsStaffGridView.DataSource = staffSearchREsults 
    StaffDetailsStaffGridView.DataBind() 

End Sub 

Unter der Annahme, MyService.GetSearchResults Methode kehren Ihnen eine gültige Suchergebnis basierend auf dem Suchschlüssel.

1

Die beste Möglichkeit, das GridView neu zu befüllen, besteht darin, eine Methode zu verwenden, mit der Sie Ihre Daten binden und bei Bedarf aufrufen können.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostback) 
     BindGrid(); 
} 

private void BindGrid() 
{ 
    StaffDetailsStaffGridView.DataSource = ObjectDataSource1; 
    StaffDetailsStaffGridView.DataBind(); 

} 

protected void btnRefreshSearch_Click(object sender, EventArgs e) 
{ 
    BindGrid(); 
} 

protected void btnSeach_Click(object sender, EventArgs e) 
{ 
    if (!String.IsNullOrEmpty(txtFnameSearch.text)) 
    { 
     BindGrid(); 
    } 
} 

Ich gehe davon aus, dass Sie Ihre Daten direkt über die ObjectDataSource filtern.

0

Dies funktioniert nicht, da nach dem Postback die Datenquelle von Gridview verloren geht. Daher müssen Sie die Datenquelle immer festlegen, bevor DataBind() aufgerufen wird.

StaffDetailsStaffGridView.DataSource = ObjectDataSource1 
StaffDetailsStaffGridView.DataBind() 

Sie auch ObjectDataSource1 in die Sitzung und verwenden Sie es später für die Bindung sparen:

Session["MyObjectDataSource"] = ObjectDataSource1; 

...

Protected Sub btnRefreshSearch_Click(sender As Object, e As EventArgs) Handles btnRefreshSearch.Click 
    StaffDetailsStaffGridView.DataSource = Session["MyObjectDataSource"] 
    StaffDetailsStaffGridView.DataBind() 
End Sub 
0

Wenn Sie mit einer deklarativen Datenquelle, können Sie einfach rufen Sie DataBind() wieder auf die GridView:

StaffDetailsStaffGridView.DataBind() 
Verwandte Themen