Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Edição complexa em um gridview em C#


Uma abordagem é permitir as atualizações de uma forma mais Ajaxy, como Aristos discute. Esta é normalmente considerada uma abordagem mais amigável e certamente oferecerá uma experiência de usuário mais agradável, mas requer familiaridade com jQuery e JavaScript e as interações entre o cliente e o servidor são um pouco mais complexas do seu ponto de vista.

Se você quiser continuar a usar o paradigma de controle da Web, considere tornar os campos "Chega em" e "Sai em" TemplateFields. No ItemTemplate, você poderia continuar exibindo o texto concatenado no banco de dados, mas colocaria um GridView no EditItemTemplate. Esse GridView pode ser associado a um controle de fonte de dados (também no EditItemTemplate) e configurado para dar suporte à edição. Se você estiver vinculando dados programaticamente (ou seja, não usando um controle de fonte de dados), você precisará associar os dados ao GridView filho sempre que a linha pai se tornar editável. Isso pode ser feito declarativamente usando marcação assim:
<asp:TemplateField ...>
    <EditItemTemplate>
        <asp:GridView runat="server" id="gvChild" DataSource='<%# SomeFunction() %>' ...>
           ...
        </asp:GridView>
    </EditItemTemplate>
</asp:TemplateField>

Aqui, SomeFunction seria uma função em sua classe code-behind (normalmente) que retorna os dados para vincular à grade.

Como alternativa, você pode vincular os dados ao GridView filho programaticamente por meio do RowDataBound do GridView pai manipulador de eventos. Ou seja, você verificaria se está lidando com a linha que está sendo editada (ou seja, se e.Row.RowIndex = ParentGridViewID.EditIndex ). Nesse caso, você pode referenciar programaticamente o filho GridView usando e.Row.FindControl("ChildGridViewID") e, em seguida, defina seu DataSource e chame seu DataBind método.

Quando um usuário clica no botão Editar para a grade pai, as células "Chegar em" e "Sair em" serão exibidas como uma grade com botões Editar próprios para modificar os horários individuais. Como alternativa, você pode colocar o GridView editável filho no ItemTemplate se quiser permitir que os usuários editem os horários "Chegar em" e "Sair em" sem exigir que o usuário escolha primeiro editar o registro pai.