DataGrid. evento de edicion de una celda

15/07/2004 - 14:54 por dito | Informe spam
Hola compañeros,

Tengo otra de mis dudas, haber si me podeis echar una mano:

Tengo un dataGrid que lo cargo con un dataset el cual solo
tiene una tabla.
Antes de vincular la propiedad dataGrid1.SetDataBinding
al dataSet tengo un metodo que crea las columnas que
quiero visualizar. lo hago mediante el objeto
DataGridTableStyle y DataGridTextBoxColumn. De esta forma
me creo las columnas y las añado al DataGrid.

Ahora ya controlo la apariencia visual de cada columna del
datagrid. Pero...

Que evento se dispara cuando estoy editando un celda, o
que tengo que hacer para controlar cuando se esta
escribiendo en una celda.
No lo encuentro por ningun lado.haber si podeis decirme
donde puedo encontrar un ejemplo o darme alguna idea

En resumen. El DataGrid permite modificar el valor de las
celdas, pero tengo que controlar si el valor introducido
es correcto.

un salu[dito]
 

Leer las respuestas

#1 Andrés Ortíz
15/07/2004 - 19:31 | Informe spam
Hola

Haber lo de la edición es algo así:

OJO que este ejemplo te ira traido de los cabellos porque
es algo que yo tengo hecho, así que hay métodos Web que se
llaman através de un proxy de unos servicios Web, así que
eso debes acomodarlo tú.

/// <summary>
/// Programación del evento edit del data grid dgusuarios
/// </summary>
private void dgUsuarios_EditCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dgUsuarios.EditItemIndex = e.Item.ItemIndex;
//Guardando el id del usuario que se va a modificar
idUsuario = e.Item.Cells[1].Text;
txtId.Text=idUsuario;
Llenar();
}

/// <summary>
/// Programación del evento canel del data grid dgusuarios
/// </summary>
private void dgUsuarios_CancelCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dgUsuarios.EditItemIndex = -1;
Llenar();
}

//
/// <summary>
/// Programación del evento update del data grid
dgusuarios.
/// Se comunica con la clase proxyweb
/// </summary>
private void dgUsuarios_UpdateCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
TextBox nuevocodigo, nuevonombre, nuevoapellido;
string nuevotipo, nuevocurso;
DropDownList ddlCambiaCurso = (DropDownList)e.Item.Cells
[6].Controls[1];
DropDownList ddlCambiaTipo = (DropDownList)e.Item.Cells
[5].Controls[1];
nuevocodigo = (TextBox)e.Item.Cells[1].Controls[0];
nuevonombre = (TextBox)e.Item.Cells[2].Controls[0];
nuevoapellido = (TextBox)e.Item.Cells[3].Controls[0];
nuevotipo = ddlCambiaTipo.SelectedItem.Value;
nuevocurso = ddlCambiaCurso.SelectedItem.Value;
proxyweb = (ProxyWeb)(Context.Session["proxy"]);
proxyweb.UpdateDGUsuario(txtId.Text,nuevocodigo.Text,
nuevonombre.Text, nuevoapellido.Text, nuevotipo.ToUpper(),
nuevocurso.ToUpper());
dgUsuarios.EditItemIndex = -1;
Llenar();
}


Y el código del DataGrid en vista HTML es algo así, esto
te puede dar una idea, ah y no olvides desactivar su
propiedad AutoGenerateColumns


<asp:datagrid id="dgUsuarios" runat="server"
AllowSorting="True" AutoGenerateColumns="False"
PageSize="5" AllowPaging="True">
<HeaderStyle Font-
Bold="True" HorizontalAlign="Center" ForeColor="Black"
BackColor="#EFDB39"></HeaderStyle>
<Columns>
<asp:ButtonColumn
Text="Seleccionar" CommandName="Select">

<HeaderStyle Font-Bold="True"
HorizontalAlign="Center" ForeColor="Black"
BackColor="#EFDB39"></HeaderStyle>
<ItemStyle
Font-Bold="True" ForeColor="White"
BackColor="Gray"></ItemStyle>
</asp:ButtonColumn>
<asp:BoundColumn
DataField="usucodigo" SortExpression="usucodigo asc"
HeaderText="CODIGO"></asp:BoundColumn>
<asp:BoundColumn
DataField="usunombres"
HeaderText="NOMBRE"></asp:BoundColumn>
<asp:BoundColumn
DataField="usuapellidos"
HeaderText="APELLIDOS"></asp:BoundColumn>
<asp:BoundColumn
DataField="usulogin" ReadOnly="True"
HeaderText="LOGIN"></asp:BoundColumn>

<asp:TemplateColumn HeaderText="TIPO">

<ItemTemplate>
<%
#DataBinder.Eval(Container.DataItem, "usucurtipo")%>

</ItemTemplate>

<EditItemTemplate>

<asp:DropDownList runat="server"
ID="Dropdownlist2"></asp:DropDownList>

</EditItemTemplate>

</asp:TemplateColumn>

<asp:TemplateColumn HeaderText="CURSO">

<ItemTemplate>
<%
#DataBinder.Eval(Container.DataItem, "curnombre")%>

</ItemTemplate>

<EditItemTemplate>

<asp:DropDownList runat="server"
ID="Dropdownlist1" />

</EditItemTemplate>

</asp:TemplateColumn>

<asp:EditCommandColumn ButtonType="LinkButton"
UpdateText="Update" CancelText="Cancel" EditText="Editar">

<HeaderStyle Font-Bold="True" ForeColor="Black"
BackColor="#EFDB39"></HeaderStyle>
<ItemStyle
Font-Bold="True" ForeColor="White"
BackColor="Gray"></ItemStyle>

</asp:EditCommandColumn>
<asp:ButtonColumn
Text="Borrar" CommandName="Delete">

<HeaderStyle Font-Bold="True" ForeColor="Black"
BackColor="#EFDB39"></HeaderStyle>
<ItemStyle
Font-Bold="True" ForeColor="White"
BackColor="Gray"></ItemStyle>
</asp:ButtonColumn>
</Columns>
<PagerStyle Font-
Bold="True" ForeColor="Black"
BackColor="#EFDB39"></PagerStyle>
</asp:datagrid>

Preguntas similares