我在我的页面(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