c# - net - telerik radlistview
LinkButton en ListView en UpdatePanel causa una devoluciĆ³n de datos completa (5)
Tengo un LinkButton en un ListView en un UpdatePanel. Me gustaría que el botón (bueno, cualquiera de ellos) genere una devolución de datos parcial, pero están causando una devolución de datos de página completa.
<asp:UpdatePanel ID="upOutcomes" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:ListView ID="lvTargets" runat="server" onitemdatabound="lvTargets_ItemDataBound">
<ItemTemplate>
<asp:LinkButton ID="lnkAddTarget" CssClass="lo" Text=''<%# Eval("Title") + " <b>" + Eval("Level") + Eval("SubLevel") + "</b>" %>'' runat="server"></asp:LinkButton>
</ItemTemplate>
</asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>
Encontré otra publicación en stackoverflow que sugería agregar esto:
protected void lvTargets_ItemDataBound(object sender, ListViewItemEventArgs e) {
var lb = e.Item.FindControl("lnkAddTarget") as LinkButton;
tsm.RegisterAsyncPostBackControl(lb); // ToolkitScriptManager
}
No ha hecho la diferencia ...
¡También hay algunas otras publicaciones similares, pero no puedo encontrar una solución! ¿Algunas ideas?
Intente agregar los atributos OnCommand
, OnCommand
y el controlador de eventos OnCommand
a su botón de enlace de esta manera:
<asp:LinkButton CommandName=''test'' CommandArgument=''<%# Eval("Title") %>'' ID="lnkAddTarget" runat="server" OnCommand="LinkButtonCommandEventHandler" />
O bien, agregar el controlador OnItemCommand
a todo ListView.
La configuración ClientIDMode en ASP.NET 4 le permite especificar cómo ASP.NET genera el atributo id para elementos HTML.
En versiones anteriores de ASP.NET (es decir, pre 4), el comportamiento predeterminado era equivalente a la configuración AutoID de ClientIDMode. Sin embargo, la configuración predeterminada ahora es Predecible .
Se requiere AutoID para esto debido a la forma en que el administrador de scripts espera que los controles HTML se generen en versiones anteriores de .NET.
Resolví este problema estableciendo: ClientIDMode = "AutoID" en la directiva de la página correspondiente como: <%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>
, resolviendo mi problema anterior de tener un botón de enlace ASP dentro de un ListView para causar una devolución de datos completa.
Sin embargo, esto puede requerir que cualquier control ASP en el código del cliente (Jquery, Javascript) sea referido por su nombre completo tal como aparece en el código fuente del navegador (yo uso Firebug en Firefox para obtener los nombres). Por ejemplo, esta función de Jquery $("#ContentPlaceHolder1_btnCancelReferCustomer").click(function () { $("#divRefer").hide({ effect: "slide", duration: 200 }); return false; });
se cambió a esto (tenga en cuenta el cambio del nombre del botón asp en el selector): $("#ctl00_ContentPlaceHolder1_btnCancelReferCustomer").click(function () { $("#divRefer").hide({ effect: "slide", duration: 200 }); return false; });
Resolví este problema estableciendo: ClientIDMode = "AutoID" en la directiva de la página correspondiente de la siguiente manera: <% @ Título de la página = "" ClientIDMode = "AutoID" Idioma = "C #"%>
ClientIDMode="AutoID"
este problema estableciendo: ClientIDMode="AutoID"
en la directiva de la página correspondiente de la siguiente manera:
<%@ Page Title="" ClientIDMode="AutoID" Language="C#"%>
Esto está funcionando bien.