2012-03-30 64 views
0

我有一個搜索網格視圖,它限制了結果。我希望網格視圖重新填充所有條目,如果a。搜索框爲空或b。用戶點擊一個按鈕刷新。搜索後刷新gridview

Protected Sub btnSeach_Click(sender As Object, e As EventArgs) Handles btnSeach.Click 
    StaffDetailsStaffGridView.DataSourceID = "" 
    StaffDetailsStaffGridView.DataSource = ObjectDataSource1 
    StaffDetailsStaffGridView.DataBind() 


    If txtFnameSearch.text = " " Then 
     StaffDetailsStaffGridView.DataBind() 
    End If 
End Sub 

Protected Sub btnRefreshSearch_Click(sender As Object, e As EventArgs) Handles btnRefreshSearch.Click 
    StaffDetailsStaffGridView.DataBind() 
End Sub 
End Class 

StaffDetailsS​​taffGridView.DataBind()顯然不起作用。

我該如何正確地做到這一點?

回答

0

您應該再次獲取數據源並將其設置爲DataSource,然後重新綁定。

像這樣的事情

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 

假設MyService.GetSearchResults方法將返回基於搜索鍵有效的搜索結果。

1

重新填充GridView的最好方法是通過一種專門用於綁定數據和在需要時調用的方法。

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(); 
    } 
} 

我假設你通過ObjectDataSource直接過濾數據。

0

這將不起作用,因爲回發後,gridview的數據源將會丟失。所以你總是需要在調用DataBind()之前設置數據源。

StaffDetailsStaffGridView.DataSource = ObjectDataSource1 
StaffDetailsStaffGridView.DataBind() 

您還可以保存到ObjectDataSource1會議,並隨後將其用於綁定:

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

如果您使用的是數據源的聲明,你可以請致電DataBind()再登錄GridView

StaffDetailsStaffGridView.DataBind()