Para obtener el valor de un control ASPxSpinEdit dentro de un ASPxGridView
-Agregar un control ASPxSpinEdit dentro del DataItem Template
-Hacer que se muestren los datos de la fuente poniendo en el atributo value la expressión siguiente: '<%# Bind("GroupCode") %>' donde GroupCode es el nombre de la columna en la fuente de datos.
-Hacer que el evento ValueChanged se procese en el servidor agregando lo siguiente en los eventos del cliente:
<ClientSideEvents ValueChanged="function(s, e) {
e.processOnServer = true;
}" />
El markup completo de la columna quedaría así:
<dx:GridViewDataTextColumn Caption="Grupo" FieldName="GroupCode" ShowInCustomizationForm="True" VisibleIndex="4">
<PropertiesTextEdit DisplayFormatInEditMode="True" DisplayFormatString="g">
</PropertiesTextEdit>
<DataItemTemplate>
<dx:ASPxSpinEdit ID="spinEditGroup" runat="server" Height="21px" ClientInstanceName="spinEditGroup" Value='<%# Bind("GroupCode") %>'
onvaluechanged="spinEditGroup_ValueChanged" >
<ClientSideEvents ValueChanged="function(s, e)
{ e.processOnServer = true;
}" />
</dx:ASPxSpinEdit>
</DataItemTemplate>
</dx:GridViewDataTextColumn>
-Por último para leer el dato contenido dentro del control hay que hacerlo de la siguiente manera:
GridViewDataColumn gv = this.grvHarnessItems.Columns["Grupo"] as GridViewDataColumn;
ASPxSpinEdit spinEditGroup = this.grvHarnessItems.FindRowCellTemplateControl(i, gv, "spinEditGroup") as ASPxSpinEdit;
miValor = spinEditGroup.Value.ToString();
El dato deseado se encontrará en la variable miValor.
Con este procedimiento se cargará la página cada vez que cambiemos el valor de un AspxSpinEdit; si deseamos hacer la captura de todos los valores dentro del ASPxSpinEdit en el cliente y obtener los valores al final (por ejemplo: al presionar el botón Grabar), no usaremos los eventos del cliente y obtendremos los valores de los controles iterando a traves de los registros del ASPxGridview tal y como se muestra en el siguiente ejemplo:
String value = String.Empty;
if (this.grvHarnessItems.VisibleRowCount > 0){
for (int i = 0; i < this.grvHarnessItems.VisibleRowCount; i++)
{
int rowKey;
rowKey = Convert.ToInt32(this.grvHarnessItems.GetRowValues(Convert.ToInt32(i), "GroupCode"));
ASPxSpinEdit spinEditGroupCode = (ASPxSpinEdit)grvHarnessItems.FindRowCellTemplateControl(i, (GridViewDataColumn)grvHarnessItems.Columns["Grupo"], "spinEditGroupCode ");
value += spinEditGroupCode .Text + ", ";
}
}
Los valores obtenidos de los controles estarán en el String value separados por comas.
-Agregar un control ASPxSpinEdit dentro del DataItem Template
-Hacer que se muestren los datos de la fuente poniendo en el atributo value la expressión siguiente: '<%# Bind("GroupCode") %>' donde GroupCode es el nombre de la columna en la fuente de datos.
-Hacer que el evento ValueChanged se procese en el servidor agregando lo siguiente en los eventos del cliente:
<ClientSideEvents ValueChanged="function(s, e) {
e.processOnServer = true;
}" />
El markup completo de la columna quedaría así:
<dx:GridViewDataTextColumn Caption="Grupo" FieldName="GroupCode" ShowInCustomizationForm="True" VisibleIndex="4">
<PropertiesTextEdit DisplayFormatInEditMode="True" DisplayFormatString="g">
</PropertiesTextEdit>
<DataItemTemplate>
<dx:ASPxSpinEdit ID="spinEditGroup" runat="server" Height="21px" ClientInstanceName="spinEditGroup" Value='<%# Bind("GroupCode") %>'
onvaluechanged="spinEditGroup_ValueChanged" >
<ClientSideEvents ValueChanged="function(s, e)
{ e.processOnServer = true;
}" />
</dx:ASPxSpinEdit>
</DataItemTemplate>
</dx:GridViewDataTextColumn>
-Por último para leer el dato contenido dentro del control hay que hacerlo de la siguiente manera:
GridViewDataColumn gv = this.grvHarnessItems.Columns["Grupo"] as GridViewDataColumn;
ASPxSpinEdit spinEditGroup = this.grvHarnessItems.FindRowCellTemplateControl(i, gv, "spinEditGroup") as ASPxSpinEdit;
miValor = spinEditGroup.Value.ToString();
El dato deseado se encontrará en la variable miValor.
Con este procedimiento se cargará la página cada vez que cambiemos el valor de un AspxSpinEdit; si deseamos hacer la captura de todos los valores dentro del ASPxSpinEdit en el cliente y obtener los valores al final (por ejemplo: al presionar el botón Grabar), no usaremos los eventos del cliente y obtendremos los valores de los controles iterando a traves de los registros del ASPxGridview tal y como se muestra en el siguiente ejemplo:
String value = String.Empty;
if (this.grvHarnessItems.VisibleRowCount > 0){
for (int i = 0; i < this.grvHarnessItems.VisibleRowCount; i++)
{
int rowKey;
rowKey = Convert.ToInt32(this.grvHarnessItems.GetRowValues(Convert.ToInt32(i), "GroupCode"));
ASPxSpinEdit spinEditGroupCode = (ASPxSpinEdit)grvHarnessItems.FindRowCellTemplateControl(i, (GridViewDataColumn)grvHarnessItems.Columns["Grupo"], "spinEditGroupCode ");
value += spinEditGroupCode .Text + ", ";
}
}
Los valores obtenidos de los controles estarán en el String value separados por comas.
Comentarios
Publicar un comentario