我有一個ASP.NET Web應用程序。在Page_Load
上創建包含項目的網格視圖。我也有一個<asp:Textbox>
和一個搜索按鈕。我正在使用PageMethods
擺脫回發。 想法是,當按鈕被點擊時,它會調用javascript函數,然後它會調用WebMethod
。 WebMethod
根據搜索到的條件返回項目列表。用於將項目列表提取到GridView的JavaScript代碼
如何獲取這些項目並使用它們填充GridView?
換句話說,它就像是部分更新 - 按鈕單擊它應該只更新GridView。
這裏是將WebMethod代碼:
[WebMethod]
public static List<Item> SearchResults(string text)
{
ItemFunctions item_functions = new ItemFunctions();
List<Item> items = new List<Item>();
items = item_functions.searchResults(text);
return items;
}
這裏是GridView控件,按鈕和文本框:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
<asp:TextBox ID="search_textbox" runat="server" />
<input type="button" id="Button1" value="Search" onclick="SearchResults();" />
<div id="searchResults_GridView" >
<asp:GridView ID="GridView1" AllowPaging="true" GridLines="Both" runat="server" AllowSorting="True"
AutoGenerateColumns="False"
Width="740px"
CausesValidation="False">
<Columns>
<asp:BoundField DataField="item_name" HeaderText="item_name" />
<asp:BoundField DataField="item_description" HeaderText="item_description" />
<asp:BoundField DataField="item_quantity" HeaderText="item_quantity" />
<asp:BoundField DataField="category_name" HeaderText="category_name" />
<asp:BoundField DataField="type_name" HeaderText="type_name" />
<asp:BoundField DataField="item_available" HeaderText="item_available" />
<asp:BoundField DataField="item_serial_number" HeaderText="item_serial_number" />
<asp:BoundField DataField="item_permission_status" HeaderText="item_permission_status" />
<asp:BoundField DataField="item_location" HeaderText="item_location" />
<asp:CommandField ShowSelectButton="true" SelectText="View" />
</Columns>
</asp:GridView>
</div>
這是被稱爲按鈕點擊SearchResult所功能:
<script>
function SearchResults() {
PageMethods.SearchResults(OnSucceeded, OnFailed);
}
function OnSucceeded(result, userContext, methodName) {
}
function OnFailed(error, userContext, methodName) {
alert("An error occured :(");
}
</script>
我的JavaScript技能非常糟糕,我仍在學習,否則在理論上我認爲其餘的代碼應該工作。
保持它在.NET的WebForms風格,我建議你看看UpdatePanel控件。不完全是你要找的東西,但仍然是「部分更新」。按照你想要做的方式做這件事有點「黑客」的網絡形式,並可能會導致刷新時出現問題或如此... –
是的,更新面板似乎做這項工作。謝謝:) – Apostrofix