L
Luis Esteban Valencia
Hello I have a datagrid with a dropdownlist that has the products,
another column has the price of the product and when the user changes
the product it also must change the price how can I achieve that.
Thanks
Datagrid html
<asp:datagrid id="dgpedidos" runat="server" Width="100%"
ShowFooter="True" AutoGenerateColumns="False">
<ItemStyle CssClass="registros"></ItemStyle>
<HeaderStyle CssClass="titulostablas"></HeaderStyle>
<Columns>
<asp:ButtonColumn Text="Eliminar"
CommandName="Delete"></asp:ButtonColumn>
<asp:TemplateColumn HeaderText="Producto">
<ItemTemplate>
<aspropDownList id="ddlproductos" runat="server"></aspropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:LinkButton id="LinkButton1" runat="server"
CommandName="agregarproducto">Agregar Producto</asp:LinkButton>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cantidad">
<ItemTemplate>
<asp:TextBox id="txtcantidad" runat="server" Width="44px"
CssClass="textos"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Precio">
<ItemTemplate>
<asp:TextBox id=txtprecio runat="server" Width="60px" CssClass="textos"
Text='<%# DataBinder.Eval(Container, "DataItem.precioespecifico") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Iva">
<ItemTemplate>
<asp:TextBox id=txtivaporproducto runat="server" Width="36px"
CssClass="textos" Text='<%# DataBinder.Eval(Container, "DataItem.iva",
"{0:N0}%") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Subtotal">
<ItemTemplate>
<asp:TextBox id="txtsubtotalporproducto" runat="server" Width="68px"
CssClass="textos"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
And my codebehind
Dim objconsultas As New LBDatos.consultas
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
cargarproductos()
cargardatagrid()
End If
End Sub
Public Sub cargarproductos()
Session("productos") =
objconsultas.todosproductoxCia(Session("idcompania"))
End Sub
Private Sub cargardatagrid()
Dim ds As DataSet
Dim dc1 As New DataColumn("SubTotal",
System.Type.GetType("System.Decimal")) 'i am assuming your stored proc
does not contain a column SubTotal
Dim dc2 As New DataColumn("Cantidad",
System.Type.GetType("System.Int32"))
ds = objconsultas.productoxCia(Session("idcompania"))
ds.Tables(0).Columns.Add(dc2)
dc1.Expression = "Cantidad * Precioespecifico"
ds.Tables(0).Columns.Add(dc1)
dgpedidos.DataSource = ds
dgpedidos.DataBind()
End Sub
Private Sub dgpedidos_ItemDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.DataGridItemEventArgs) Handles
dgpedidos.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType =
ListItemType.AlternatingItem Then
Dim ddlproductos As New DropDownList
ddlproductos.AutoPostBack = True
ddlproductos = e.Item.Cells(1).FindControl("ddlproductos")
ddlproductos.DataSource = CType(Session("productos"),
DataSet)
ddlproductos.DataTextField = "descripcion"
ddlproductos.DataValueField = "idproducto"
ddlproductos.DataBind()
End If
End Sub
Private Sub dgpedidos_ItemCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
dgpedidos.ItemCommand
If e.CommandName = "agregarproductos" Then
Dim di As DataGridItem
di.
End If
End Sub
another column has the price of the product and when the user changes
the product it also must change the price how can I achieve that.
Thanks
Datagrid html
<asp:datagrid id="dgpedidos" runat="server" Width="100%"
ShowFooter="True" AutoGenerateColumns="False">
<ItemStyle CssClass="registros"></ItemStyle>
<HeaderStyle CssClass="titulostablas"></HeaderStyle>
<Columns>
<asp:ButtonColumn Text="Eliminar"
CommandName="Delete"></asp:ButtonColumn>
<asp:TemplateColumn HeaderText="Producto">
<ItemTemplate>
<aspropDownList id="ddlproductos" runat="server"></aspropDownList>
</ItemTemplate>
<FooterTemplate>
<asp:LinkButton id="LinkButton1" runat="server"
CommandName="agregarproducto">Agregar Producto</asp:LinkButton>
</FooterTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Cantidad">
<ItemTemplate>
<asp:TextBox id="txtcantidad" runat="server" Width="44px"
CssClass="textos"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Precio">
<ItemTemplate>
<asp:TextBox id=txtprecio runat="server" Width="60px" CssClass="textos"
Text='<%# DataBinder.Eval(Container, "DataItem.precioespecifico") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Iva">
<ItemTemplate>
<asp:TextBox id=txtivaporproducto runat="server" Width="36px"
CssClass="textos" Text='<%# DataBinder.Eval(Container, "DataItem.iva",
"{0:N0}%") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Subtotal">
<ItemTemplate>
<asp:TextBox id="txtsubtotalporproducto" runat="server" Width="68px"
CssClass="textos"></asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
And my codebehind
Dim objconsultas As New LBDatos.consultas
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
If Not Page.IsPostBack Then
cargarproductos()
cargardatagrid()
End If
End Sub
Public Sub cargarproductos()
Session("productos") =
objconsultas.todosproductoxCia(Session("idcompania"))
End Sub
Private Sub cargardatagrid()
Dim ds As DataSet
Dim dc1 As New DataColumn("SubTotal",
System.Type.GetType("System.Decimal")) 'i am assuming your stored proc
does not contain a column SubTotal
Dim dc2 As New DataColumn("Cantidad",
System.Type.GetType("System.Int32"))
ds = objconsultas.productoxCia(Session("idcompania"))
ds.Tables(0).Columns.Add(dc2)
dc1.Expression = "Cantidad * Precioespecifico"
ds.Tables(0).Columns.Add(dc1)
dgpedidos.DataSource = ds
dgpedidos.DataBind()
End Sub
Private Sub dgpedidos_ItemDataBound(ByVal sender As Object, ByVal e
As System.Web.UI.WebControls.DataGridItemEventArgs) Handles
dgpedidos.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType =
ListItemType.AlternatingItem Then
Dim ddlproductos As New DropDownList
ddlproductos.AutoPostBack = True
ddlproductos = e.Item.Cells(1).FindControl("ddlproductos")
ddlproductos.DataSource = CType(Session("productos"),
DataSet)
ddlproductos.DataTextField = "descripcion"
ddlproductos.DataValueField = "idproducto"
ddlproductos.DataBind()
End If
End Sub
Private Sub dgpedidos_ItemCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
dgpedidos.ItemCommand
If e.CommandName = "agregarproductos" Then
Dim di As DataGridItem
di.
End If
End Sub