2011-05-24 35 views
1

我有一個包含編輯,刪除和添加的ListView。這裏的一切都很好,但是List太大了,我想用文本框和按鈕給用戶一個serach功能。Asp.net實現ListView控件的搜索功能

當用戶單擊搜索按鈕時,List視圖按搜索條件進行過濾。

有人可以幫助我實現這個請。 謝謝

+0

你想過濾客戶端還是服務器端?前者將是一個更流暢的UX,後者可能更容易。 – David 2011-05-24 11:42:42

+0

客戶端請。 – 2011-05-24 12:03:30

回答

0

那麼,你必須知道你的基礎結構;說你是渲染表,你需要通過每行編寫JavaScript中循環,並做一些事情,如:

$("#table").find("tbody > tr").each(function() { 
    var row = this; 
    //loop through the cells, do the string match 
    var tds = $(this).find("td"); 
    //match the inner HTML of the td to the search criteria, depending on how 
    //your search critiera is setup   

    //if not found 
    $(this).css("display", "none"); //hide the row 
}); 
+0

謝謝,但我正在尋找開箱ASP.NET ListView Control Serch功能(如果有的話) – 2011-05-24 12:37:05

+0

有沒有開箱即用的功能。你必須做這項工作。 – 2011-05-24 13:29:29

1

(在回答有關問題的意見......)

上取決於很多你的DOM結構。您需要知道ListView如何佈置其元素。例如,如果它們都是div元素,那麼您需要知道您的JavaScript代碼。 (我要去承擔使用jQuery的,因爲它是一個安全的假設,這些天。)

從本質上講,你的過濾器都將有至少一個文本輸入元素:

<input type="text" id="searchFilter" /> 

你也可以有一個按鈕進入過濾器,但爲了簡便起見我們只濾波器作爲用戶類型:

$(document).ready(function() { 
    $('#searchFilter').keyup(function() { 
    // Here you would do your filtering. 
    }); 
}); 

對於過濾本身,你可以使用:contains()選擇。查看關於它的信息here。基本上,你會隱藏所有的元素,然後顯示匹配的元素。像這樣(未經):

$('#parentDiv div').hide(); 
$('#parentDiv div:contains(' + $('#searchFilter').val() + ')').show(); 

的想法是隱藏所有孩子的div(您的選擇可能需要更加具體,這取決於你的DOM),然後顯示匹配過濾器的人。當然,不要忘記,如果過濾器文本爲空,則有一個默認情況下顯示全部。

0

這取決於你如何使你的ListView的,但如果你渲染一張桌子和想做的事,你可以使用一個jQuery插件,如UI Table Filter

+0

我正在尋找開箱即用的ASP.NET ListView Control Serch功能。 – 2011-05-24 12:20:28

0

過濾客戶端最終使用這樣的:

protected void btnSearch_Click(object sender, EventArgs e) 
{ 
    DS.SelectCommand = 
     "SELECT ReportName, ReportType, 
     FROM Table 
     WHERE ReportName LIKE @param 
     ORDER BY ReportType Desc"; 
    DS.SelectParameters.Add("Param", searchTxtBox.Text.Replace("'", "''")); 
    DS.DataBind(); 
    ListView1.DataBind();    
}