<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<h2>Comunicación entre dos Grids</h2>
<dx:ASPxPageControl ID="pageControl" runat="server" ActiveTabIndex="0" Width="100%" Theme="Aqua">
<!-- ===== PESTAÑA 1: SELECCIÓN ===== -->
<dx:TabPage Text="1. Selección de artículos">
<dx:ContentControl runat="server">
<div style="margin: 15px 0;">
<span style="margin-right: 8px;">Artículo:</span>
<dx:ASPxComboBox ID="cbArticulos" runat="server" DataSourceID="dsArticulosCombo"
TextField="NOMBRE_CORTO" ValueField="ARTICULO_ID" ValueType="System.Int32"
IncrementalFilteringMode="Contains" Width="320px" Theme="Aqua"
NullText="-- Seleccione un artículo --">
<dx:ListBoxColumn FieldName="ARTICULO_ID" Caption="ID" Width="60px" />
<dx:ListBoxColumn FieldName="NOMBRE_CORTO" Caption="Nombre corto" Width="240px" />
<dx:ASPxButton ID="btnAgregar" runat="server" Text="Agregar"
Theme="Aqua" AutoPostBack="true" OnClick="btnAgregar_Click"
style="margin-left: 8px; display: inline-block; vertical-align: top;" />
<h4>Artículos seleccionados</h4>
<dx:ASPxGridView ID="gvSeleccion" runat="server" AutoGenerateColumns="False"
KeyFieldName="ARTICULO_ID" Theme="Aqua" Width="100%"
OnCustomButtonCallback="gvSeleccion_CustomButtonCallback">
<dx:GridViewDataTextColumn FieldName="ARTICULO_ID" Caption="ID" VisibleIndex="0" Width="80px" />
<dx:GridViewDataTextColumn FieldName="NOMBRE_CORTO" Caption="Nombre corto" VisibleIndex="1" />
<dx:GridViewCommandColumn VisibleIndex="2" Width="90px">
<dx:GridViewCommandColumnCustomButton ID="btnQuitar" Text="Quitar" />
</dx:GridViewCommandColumn>
<SettingsText EmptyDataRow="Aún no hay artículos seleccionados." />
<!-- ===== PESTAÑA 2: DETALLE / MODIFICAR ===== -->
<dx:TabPage Text="2. Detalle / Modificar">
<dx:ContentControl runat="server">
<div style="margin: 15px 0;">
<dx:ASPxGridView ID="gvDetalle" runat="server" AutoGenerateColumns="False"
DataSourceID="dsArticulosFull" KeyFieldName="ARTICULO_ID" Theme="Aqua" Width="100%">
<dx:GridViewCommandColumn ShowEditButton="True" VisibleIndex="0" Width="70px" />
<dx:GridViewDataTextColumn FieldName="ARTICULO_ID" ReadOnly="True" VisibleIndex="1" />
<dx:GridViewDataTextColumn FieldName="NOMBRE" VisibleIndex="2" />
<dx:GridViewDataTextColumn FieldName="NOMBRE_CORTO" VisibleIndex="3" />
<dx:GridViewDataComboBoxColumn FieldName="TAX_ID" Caption="Impuesto" VisibleIndex="4">
<PropertiesComboBox DataSourceID="dsImpuestos"
TextField="TAX_NOMBRE" ValueField="TAX_ID" ValueType="System.Int32"
DropDownStyle="DropDownList" IncrementalFilteringMode="StartsWith" />
</dx:GridViewDataComboBoxColumn>
<dx:GridViewDataTextColumn FieldName="PRECIO" VisibleIndex="5" />
<dx:GridViewDataTextColumn FieldName="MEDIDA" VisibleIndex="6" />
<dx:GridViewDataCheckColumn FieldName="FAVORITO" Caption="Favorito" VisibleIndex="7">
<PropertiesCheckEdit ValueType="System.Int32" ValueChecked="1" ValueUnchecked="0" />
</dx:GridViewDataCheckColumn>
<SettingsText EmptyDataRow="No hay artículos que mostrar. Agregue artículos en la pestaña 1." />
<!-- ===== ORÍGENES DE DATOS ===== -->
<!-- Combo de la pestaña 1: sólo ID y nombre corto -->
<asp:SqlDataSource ID="dsArticulosCombo" runat="server"
ConnectionString="<%$ ConnectionStrings:SPOSDBConnectionString %>"
SelectCommand="SELECT [ARTICULO_ID], [NOMBRE_CORTO] FROM [Articulos] ORDER BY [NOMBRE_CORTO]">
<!-- Grid de la pestaña 2: datos completos + edición -->
<asp:SqlDataSource ID="dsArticulosFull" runat="server"
ConnectionString="<%$ ConnectionStrings:SPOSDBConnectionString %>"
SelectCommand="SELECT [ARTICULO_ID], [NOMBRE], [NOMBRE_CORTO], [TAX_ID], [PRECIO], [MEDIDA], [FAVORITO] FROM [Articulos]"
UpdateCommand="UPDATE [Articulos] SET [NOMBRE] = @NOMBRE, [NOMBRE_CORTO] = @NOMBRE_CORTO, [TAX_ID] = @TAX_ID, [PRECIO] = @PRECIO, [MEDIDA] = @MEDIDA, [FAVORITO] = @FAVORITO WHERE [ARTICULO_ID] = @ARTICULO_ID">
<asp:Parameter Name="NOMBRE" Type="String" />
<asp:Parameter Name="NOMBRE_CORTO" Type="String" />
<asp:Parameter Name="TAX_ID" Type="Int32" />
<asp:Parameter Name="PRECIO" Type="Double" />
<asp:Parameter Name="MEDIDA" Type="String" />
<asp:Parameter Name="FAVORITO" Type="Int32" />
<asp:Parameter Name="ARTICULO_ID" Type="Int32" />
<!-- Combo de impuestos dentro del grid de detalle -->
<asp:SqlDataSource ID="dsImpuestos" runat="server"
ConnectionString="<%$ ConnectionStrings:SPOSDBConnectionString %>"
SelectCommand="SELECT [TAX_ID], [TAX_NOMBRE], [PORCENTAJE] FROM [Impuestos] ORDER BY [TAX_NOMBRE]">
Comentarios
Publicar un comentario