我在我的頁面(asp.net)上有一個自定義搜索控件,它包含一個文本框和一個用於顯示結果的中繼器。異步處理中繼器事件
隨着用戶鍵入...回覆很好,簡單的回調中繼器填充回調。
...
當搜索結果中選擇中繼打完回傳和ItemCommand事件引發(如預期)...並且該事件將子中繼器本身並綁定一個子列表到當前項目。
我的問題是,我不希望我的父母轉發器發射完整的回發,因爲該頁面是非常耗時渲染。 我試圖把控制/只是外部中繼器到ajax更新面板控制,但它似乎仍然發射回發。
任何人都可以告訴我如何告訴中繼器在回調中觸發其項目命令事件,而不是回發?
我猜這涉及手工佈線的負載爲我的repeater項目管制,但我希望那裏有一個地方的控制,處理一切對我來說:)
編輯:樣品我的情況... 。
<asp:UpdatePanel ... >
<asp:Repeater ...>
<itemTemplate> <asp:LinkButton ... CommandArg='<%= Eval("ID") %>' CommandName="select" /> </itemTemplate>
</asp:Repeater>
</asp:UpdatePanel>
所以我的問題是...
我如何告訴中繼「火這個鏈接按鈕的onclick的回調,而不是回傳」
由於鏈接按鈕的ID是動態的,因此我無法(不內聯)爲鏈接按鈕添加一個觸發器,因此在更新面板中封裝中繼器的過程不起作用。
如果我手動添加觸發器到中繼器onitembound事件的面板我從.Net得到一個異常說他回調引用是無效的......我想這是因爲即時嘗試附加回調觸發器到控件已在處理由中繼回發事件或一些設置...
編輯2:這裏
主要是因爲在頁面上的時候,這控制X數量幾乎一切都必須面對的動態場景的樣品。 控件實現ICallbackHandler和搜索bx代碼(不包括在下面)在用戶輸入公司名稱時觸發ajax調用onkeyup(所以它的工作原理有點像谷歌)。
我當時希望當用戶點擊列表中的公司名稱時,會調用回發/部分回發來恢復分支的子列表,從而防止整個頁面閃爍,從而獲得完整的回發。
然後用戶會選擇一個分支,它會做一個完整的回發,這將導致發生幾個服務器動作。
這可以正常工作......它只是不是最乾淨的用戶體驗。然後
<div id='<%= this.UniqueID + "Results" %>' class="results">
<asp:Repeater ID="ui_lstCompanies" runat="server" onitemcommand="ui_lstCompanies_ItemCommand">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<asp:Panel ID="item" runat="server">
<li>
<asp:LinkButton ID="ui_btnSelectCompany" runat="server" CommandName="Select" Text='<%# Eval("Name") %>' />
</li>
</asp:Panel>
<asp:Panel ID="selectedItem" runat="server" Visible="false">
<li>
<hr /><h4><%# Eval("Name") %></h4>
<asp:Repeater ID="ui_lstBranches" runat="server" onitemcommand="ui_lstBranches_ItemCommand" >
<HeaderTemplate>
<table style="border-collapse:collapse;">
<tr><th> </th><th>Branch Name</th><th>Branch Address</th><th>Tel</th><th>Fax</th><th>Email</th></tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td> </td>
<td><asp:LinkButton ID="ui_btnSelectBranch1" runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="Select" Text='<%# Eval("Name") %>' /></td>
<td><asp:LinkButton ID="ui_btnSelectBranch2" runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="Select" Text='<%# Eval("Address") %>' /></td></td>
<td><asp:LinkButton ID="ui_btnSelectBranch3" runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="Select" Text='<%# Eval("Telephone1") %>' /></td></td>
<td><asp:LinkButton ID="ui_btnSelectBranch4" runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="Select" Text='<%# Eval("Fax") %>' /></td></td>
<td><asp:LinkButton ID="ui_btnSelectBranch5" runat="server" CommandArgument='<%# Eval("ID") %>' CommandName="Select" Text='<%# Eval("Email") %>' /></td></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<hr />
</li>
</asp:Panel>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</div>
您是否嘗試將父Repeater控件設置爲子控件上的更新面板的異步觸發器? – 2011-04-11 12:14:22
我認爲這個問題是因爲中繼器項目模板的工作方式...我需要使得執行回調而不是回傳。 –
War
2011-04-11 13:12:16