Problema con Insercion de nuevo registro en DataGrid

03/07/2006 - 17:34 por VictorLeo | Informe spam
Hola Grupo.

Tengo un problema cuando intento insertar un nuevo registro a un
datagrid pongo el codigo espero me puedan ayudar.

private void grdDetalle_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName=="AddNewRow")
{
string strAnoOtNew;
TextBox txtAnoOtNew;
txtAnoOtNew (TextBox)(e.Item.Cells[0].FindControl("txtAnoOtNew"));
strAnoOtNew = txtAnoOtNew.Text;
//crea un nuevo registro
DataRow drDetalle;
drDetalle = dtDetalle.NewRow();
drDetalle["anoot"]= strAnoOtNew; //aqui me da error me dice que la
columna anoot no existe en la tabla
dtDetalle.Rows.Add(drDetalle);
BindGrid();
}

}
private void BindGrid()
{
grdDetalle.DataSource = dtDetalle;
grdDetalle.DataBind();
}

Este es como creo mi datagrid

asp:datagrid id="grdDetalle" runat="server" AutoGenerateColumns="False"
ShowFooter="True">
<AlternatingItemStyle
CssClass="GridAltItem"></AlternatingItemStyle>
<ItemStyle CssClass="GridItem"></ItemStyle>
<HeaderStyle CssClass="GridHeader"></HeaderStyle>
<FooterStyle CssClass="GridFooter"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="A&#241;o OT">
<ItemTemplate>
<asp:Label id=lblAnoOtItem runat="server" Width="50px"
Text='<%# DataBinder.Eval(Container, "DataItem.anoot") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="txtAnoOtNew" runat="server"
CssClass="CajaTextoEdicion" Width="50px"></asp:TextBox>
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id="txtAnoOtEdit" runat="server"
CssClass="CajaTextoEdicion" Width="50px"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cod OT">
<ItemTemplate>
<asp:Label id=lblCodOtItem runat="server" Width="50px"
Text='<%# DataBinder.Eval(Container, "DataItem.codot") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="txtCodOtNew" runat="server" Width="50px"
CssClass="CajaTextoEdicion"></asp:TextBox>
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id="txtCodOtEdit" runat="server"
Width="50px" CssClass="CajaTextoEdicion"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cod. Articulo">
<ItemTemplate>
<asp:Label id=lblCodArtItem runat="server" Width="75px"
Text='<%# DataBinder.Eval(Container, "DataItem.carticulo") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="txtCodArtNew" Width="75px"
CssClass="CajaTextoEdicion" Runat="server"></asp:TextBox><INPUT
class="Boton" id="btnBusCodArt" type="button" value="...">
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id="txtCodArtEdit" Width="75px"
CssClass="CajaTextoEdicion" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Descripcion Articulo">
<ItemTemplate>
<asp:Label id=lblDesArtItem runat="server" Width="100px"
Text='<%# DataBinder.Eval(Container, "DataItem.darticulo") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="txtDesArtNew" runat="server"
Width="100px" CssClass="CajaTextoEdicion"></asp:TextBox>
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id="txtDesArtEdit" runat="server"
Width="100px" CssClass="CajaTextoEdicion"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton id="lnkEditar" runat="server" Text="<img
border=0 src=../Img/Editar.gif alt=editar>"
CommandName="Edit" CausesValidation="False">
<img border="0" src="../Img/Editar.gif"
alt="editar"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton id="lnkActualizar" runat="server"
Text="<img border=0 src=../Img/Actualizar.gif alt=Guardar/Actualizar>"
CommandName="Update">
<img border="0" src="../img/Actualizar.gif"
alt="Guardar/Actualizar" width="16" height="16"></asp:LinkButton>&nbsp;
<asp:LinkButton id="lnkCancelar" runat="server"
Text="<img border=0 src=../Img/Cancel.gif alt=Cancelar>"
CommandName="Cancel" CausesValidation="False">
<img border="0" src="../Img/Cancelar.gif"
alt="Cancelar"></asp:LinkButton>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton id="lnkEliminar" runat="server"
Text="<img border=0 src=../Img/Eliminar.gif alt=Eliminar>"
CommandName="Delete" CausesValidation="False">
<img border="0" src="../Img/Eliminar.gif" alt="Eliminar"
width="16" height="16"></asp:LinkButton>
</ItemTemplate>
<FooterTemplate>
<asp:LinkButton id="lnkAgregar" runat="server"
CommandName="AddNewRow">
<img border="0" src="../img/Guardar.gif" alt="Agregar"
width="16" height="16"></asp:LinkButton>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>

Preguntas similare

Leer las respuestas

#1 VictorLeo
03/07/2006 - 18:12 | Informe spam
VictorLeo ha escrito:

Hola Grupo.

Tengo un problema cuando intento insertar un nuevo registro a un
datagrid pongo el codigo espero me puedan ayudar.

private void grdDetalle_ItemCommand(object source,
System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName=="AddNewRow")
{
string strAnoOtNew;
TextBox txtAnoOtNew;
txtAnoOtNew > (TextBox)(e.Item.Cells[0].FindControl("txtAnoOtNew"));
strAnoOtNew = txtAnoOtNew.Text;
//crea un nuevo registro
DataRow drDetalle;
drDetalle = dtDetalle.NewRow();
drDetalle["anoot"]= strAnoOtNew; //aqui me da error me dice que la
columna anoot no existe en la tabla
dtDetalle.Rows.Add(drDetalle);
BindGrid();
}

}
private void BindGrid()
{
grdDetalle.DataSource = dtDetalle;
grdDetalle.DataBind();
}

Este es como creo mi datagrid

asp:datagrid id="grdDetalle" runat="server" AutoGenerateColumns="False"
ShowFooter="True">
<AlternatingItemStyle
CssClass="GridAltItem"></AlternatingItemStyle>
<ItemStyle CssClass="GridItem"></ItemStyle>
<HeaderStyle CssClass="GridHeader"></HeaderStyle>
<FooterStyle CssClass="GridFooter"></FooterStyle>
<Columns>
<asp:TemplateColumn HeaderText="A&#241;o OT">
<ItemTemplate>
<asp:Label id=lblAnoOtItem runat="server" Width="50px"
Text='<%# DataBinder.Eval(Container, "DataItem.anoot") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="txtAnoOtNew" runat="server"
CssClass="CajaTextoEdicion" Width="50px"></asp:TextBox>
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id="txtAnoOtEdit" runat="server"
CssClass="CajaTextoEdicion" Width="50px"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cod OT">
<ItemTemplate>
<asp:Label id=lblCodOtItem runat="server" Width="50px"
Text='<%# DataBinder.Eval(Container, "DataItem.codot") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="txtCodOtNew" runat="server" Width="50px"
CssClass="CajaTextoEdicion"></asp:TextBox>
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id="txtCodOtEdit" runat="server"
Width="50px" CssClass="CajaTextoEdicion"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cod. Articulo">
<ItemTemplate>
<asp:Label id=lblCodArtItem runat="server" Width="75px"
Text='<%# DataBinder.Eval(Container, "DataItem.carticulo") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="txtCodArtNew" Width="75px"
CssClass="CajaTextoEdicion" Runat="server"></asp:TextBox><INPUT
class="Boton" id="btnBusCodArt" type="button" value="...">
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id="txtCodArtEdit" Width="75px"
CssClass="CajaTextoEdicion" Runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Descripcion Articulo">
<ItemTemplate>
<asp:Label id=lblDesArtItem runat="server" Width="100px"
Text='<%# DataBinder.Eval(Container, "DataItem.darticulo") %>'>
</asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox id="txtDesArtNew" runat="server"
Width="100px" CssClass="CajaTextoEdicion"></asp:TextBox>
</FooterTemplate>
<EditItemTemplate>
<asp:TextBox id="txtDesArtEdit" runat="server"
Width="100px" CssClass="CajaTextoEdicion"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton id="lnkEditar" runat="server" Text="<img
border=0 src=../Img/Editar.gif alt=editar>"
CommandName="Edit" CausesValidation="False">
<img border="0" src="../Img/Editar.gif"
alt="editar"></asp:LinkButton>
</ItemTemplate>
<EditItemTemplate>
<asp:LinkButton id="lnkActualizar" runat="server"
Text="<img border=0 src=../Img/Actualizar.gif alt=Guardar/Actualizar>"
CommandName="Update">
<img border="0" src="../img/Actualizar.gif"
alt="Guardar/Actualizar" width="16" height="16"></asp:LinkButton>&nbsp;
<asp:LinkButton id="lnkCancelar" runat="server"
Text="<img border=0 src=../Img/Cancel.gif alt=Cancelar>"
CommandName="Cancel" CausesValidation="False">
<img border="0" src="../Img/Cancelar.gif"
alt="Cancelar"></asp:LinkButton>
</EditItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn>
<ItemTemplate>
<asp:LinkButton id="lnkEliminar" runat="server"
Text="<img border=0 src=../Img/Eliminar.gif alt=Eliminar>"
CommandName="Delete" CausesValidation="False">
<img border="0" src="../Img/Eliminar.gif" alt="Eliminar"
width="16" height="16"></asp:LinkButton>
</ItemTemplate>
<FooterTemplate>
<asp:LinkButton id="lnkAgregar" runat="server"
CommandName="AddNewRow">
<img border="0" src="../img/Guardar.gif" alt="Agregar"
width="16" height="16"></asp:LinkButton>
</FooterTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>




Bueno investigando por alli creo q no encuentra la columna ya que como
hace postback se pierde el contenido del datatable entonces vi en otros
proyectos que lo que hacen es guardarlo en una variable session pero no
se si sea la mejor forma espero opiniones gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida