/ / postback assíncrono dentro do radGrid editForm userControl - asp.net, telerik, asp.net-ajax

postback assíncrono dentro do radGrid editForm userControl - asp.net, telerik, asp.net-ajax

minha página (productionEntry.aspx) possui um radGrid que contém um radAjaxManager cujas configurações permitem postbacks assíncronos do radGrid:

<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="RadGridProductionOrders">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="RadGridProductionOrders" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>

então RadGridProduictionOrders lança assincronamente de volta, o que é bom.

agora, no entanto, o editForm do radGrid é um pop-upcontrole de usuário, e o que eu gostaria de realizar é postar assincronamente parte do conteúdo do controle de usuário. Eu tentei fazer isso com um radAjaxManagerProxy e um radAjaxPanel juntos e com cada um por si só dentro do controle de usuário. sempre que a página é lançada de forma assíncrona, de acordo com as configurações no radAjaxManager na página productionEntry.aspx.

essa foi a marcação para o radAjaxManagerProxy no controle do usuário. o conteúdo que eu queria postar estava dentro do Panel1:

<telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="Panel1">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="Panel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>

como preciso configurar a página e / ou o controle do usuário para realizar o que preciso?

Respostas:

1 para resposta № 1

entrei em contato com a telerik sobre esse problema, e a resposta deles foi que não era possível:

Embora o formulário de edição esteja em uma janela pop-up,ainda faz parte do RadGrid. No servidor, o controle pop-up é renderizado como parte do RadGrid, portanto é parte integrante do RadGrid. Tendo isso em mente e sabendo que o RadGrid é um controle composto que deve ser atualizado como um todo, receio que seu requisito não possa ser alcançado com o RadAjaxManager. A postagem será sempre feita pelo RadGrid e você precisará atualizar sempre o RadGrid, que fechará e redefinirá os valores no formulário de edição.

espero que isso ajude outras pessoas no caminho ...


1 para resposta № 2

Eu sei que já faz um tempo, mas foi o que eu construí e o que fiz:

Eu tinha uma grade como painel de entrada de dados - 3 linhas fixasno modo de edição. Havia um caso muito provável de que a empresa voltasse e solicitasse uma visualização do "histórico de exibição" dos mesmos dados, de modo que uma grade era o que eu queria construir (em oposição a uma tabela fixa) para me proteger das mudanças.

Em vez de usar um GridBoundColumn, usei uma coluna GridTemplate com um edititemtemplate da seguinte maneira:

<EditItemTemplate>
<telerik:RadTextBox runat="server" ID="Address1" Text="<%#Bind("Address1") %>" OnTextChanged="Address1_OnTextChanged" AutoPostBack="True"></telerik:RadTextBox>
<asp:UpdatePanel runat="server"><Triggers><asp:AsyncPostBackTrigger ControlID="Address1"/></Triggers></asp:UpdatePanel>
</EditItemTemplate>

Isso me permite ter um retorno de chamada simples de ligação de dadospor linha, por caixa de texto, sem causar alterações gráficas no front-end ou interromper a experiência do usuário. Isso cria uma sobrecarga adicional na página, mas deve ser insignificante.

O codebehind se parece com:

protected void Address1_OnTextChanged(object sender, EventArgs e)
{
//Find which row you"re on
var id = ((sender as RadTextBox).Parent.Parent as GridDataItem).GetDataKey("ID");
//Do whatever you need to do with the data by using the ID to match.
myList[id].Address1 = (sender as RadTextBox).Text;
}

Editar: Estou usando o padrão do Supervising Presenter, onde a visualização pode falar diretamente com o modelo em situações em que nenhuma outra lógica está envolvida. Isso pode exigir sobrecarga adicional se você estiver fazendo algo diferente.