none
Maestro-detalle con dos gridview RRS feed

  • Pregunta

  • Amigos sonara tonto pero la verdad llevo ya rato tratando de implementar un maestro detalle y la verdad no he podio.

    el codigo del webform es:

    <%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="false" CodeBehind="ModOferta.aspx.cs" Inherits="CURACION_2015.ModOferta" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <div class="Buscador">
            <ul>
                <li>
                    <h2>Ofertas Modificar</h2>
                </li>
                <li>
                    <asp:Label ID="LblLicitacion" runat="server" Text="NÚMERO DE LICITACIÓN:"></asp:Label>
                    &nbsp;
                    <asp:TextBox ID="txtlicitacion" runat="server" CssClass="Buscador_textbox" Height="16px" OnTextChanged="txtlicitacion_TextChanged" AutoPostBack="True"></asp:TextBox></li>
                <li>
                    <asp:UpdatePanel ID="UpdatePanel2" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="txtlicitacion" EventName="TextChanged" />
                        </Triggers>
                        <ContentTemplate>
                            <asp:Label ID="Lblproveedor" runat="server" Text="RAZÓN SOCIAL:"></asp:Label>
    &nbsp;&nbsp;<asp:DropDownList ID="ddproveedor" runat="server" CssClass="BuscadorDropDownList"></asp:DropDownList>
                            &nbsp;
                            <asp:Label ID="LblCLave" runat="server" Text="CLAVE OFERTADA:"></asp:Label>
                        </ContentTemplate>
                    </asp:UpdatePanel>
                </li>
                <li class="Botton_aling">
                    &nbsp;<asp:Button ID="BtonCan" CssClass="Button" BorderStyle="None" runat="server" Height="28px" Text="Cancelar" Width="118px" OnClick="BtonCan_Click" />&nbsp;<asp:Button ID="BtonBuscar" CssClass="Button" BorderStyle="None" runat="server" Height="28px" Text="Buscar" Width="118px" OnClick="BtonBuscar_Click" />
                    </li>
            </ul>
        </div>
        <asp:GridView ID="GridOfertas" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="Vertical" Font-Names="Microsoft Sans Serif" Font-Size="Small" Font-Underline="False" CaptionAlign="Left" AllowPaging="True" CssClass="Gridview" PagerStyle-CssClass="pgr" DataKeyNames="OFERTAID" Width="100%" OnPageIndexChanging="GridOfertas_PageIndexChanging" OnSelectedIndexChanged="GridOfertas_SelectedIndexChanged" OnSelectedIndexChanging="GridOfertas_SelectedIndexChanging" OnRowCommand="GridOfertas_RowCommand" OnRowDataBound="GridOfertas_RowDataBound1">
                <AlternatingRowStyle BackColor="White" BorderWidth="1px" Font-Size="Smaller" />
                <Columns>
                    <asp:TemplateField HeaderText="Selec.">
                        <ItemTemplate>
                            <asp:ImageButton ID="ImgSeleccion" runat="server"  CommandName="Select" ImageUrl="~/imagenes/plus.gif"  CommandArgument="<%# ((GridViewRow)Container).RowIndex %>"></asp:ImageButton>
                        </ItemTemplate>
                        <ItemStyle Width="20px" />
                    </asp:TemplateField>
    
                    <asp:TemplateField HeaderText="No.">
                        <ItemTemplate>
                            <asp:Label ID="Label1" runat="server"
                                Text='<%# (GridOfertas.PageSize * GridOfertas.PageIndex) + Container.DisplayIndex + 1 %>'>  
                            </asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="CLAVE" HeaderText="CLAVE" ItemStyle-Width="120px">
                        <ItemStyle Width="120px"></ItemStyle>
                    </asp:BoundField>
                    <asp:BoundField DataField="DESCRIPCION" HeaderText="DESCRIPCION" HtmlEncode="False">
                        <ItemStyle HorizontalAlign="Justify" />
                    </asp:BoundField>
                    <asp:BoundField DataField="RAZON_SOCIAL" HeaderText="LICITANTE" HtmlEncode="False" />
                    <asp:BoundField DataField="PRECIO_OFERTADO" DataFormatString="{0:c}" HeaderText="PREC. OFERT." HtmlEncode="False" />
                    <asp:BoundField DataField="DESCUENTO" DataFormatString="{0:N2}" HeaderText="% DESC. OFERT." />
                    <asp:BoundField DataField="PRECIO_NETO_FINAL" DataFormatString="{0:c}" HeaderText="PRECIO NETO" />
                    <asp:BoundField DataField="MAXIMO" DataFormatString="{0:N0}" HeaderText="MAXIMO" HtmlEncode="False" />
                    <asp:BoundField />
                </Columns>
                <EditRowStyle BackColor="#7C6F57" />
                <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" Font-Size="Smaller" />
                <HeaderStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" Font-Size="Smaller" />
                <PagerStyle />
                <RowStyle BackColor="#E3EAEB" BorderColor="#000066" BorderStyle="Solid" BorderWidth="1px" Font-Size="Smaller" />
                <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                <SortedAscendingCellStyle BackColor="#F8FAFA" />
                <SortedAscendingHeaderStyle BackColor="#246B61" />
                <SortedDescendingCellStyle BackColor="#D4DFE1" />
                <SortedDescendingHeaderStyle BackColor="#15524A" Font-Size="Smaller" />
            </asp:GridView>
        Fabricante.
        <br />
        <div style="overflow-x: auto; overflow-y:hidden">
            <asp:GridView ID="GridMarcas" runat="server" AutoGenerateColumns="False"  DataKeyNames="Id" ShowFooter="True" Width="100%" OnRowDataBound="GridMarcas_RowDataBound" ForeColor="Black">
                <Columns>
                    <asp:TemplateField HeaderText="NOM. CORTO">
                        <FooterTemplate>
                            <asp:TextBox ID="txtFtClase" CssClass="TextboxMarcas" runat="server" ></asp:TextBox>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblItemClase" runat="server" Text='<%# Bind("MARCA") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="REGISTRO. SAN.">
                        <FooterTemplate>
                            <asp:TextBox ID="txtFtRegistro" CssClass="TextboxMarcas" runat="server" ></asp:TextBox>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblItemRegistro" runat="server" Text='<%# Bind("REGISTRO") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="OF. EXIME REG.">
                        <FooterTemplate>
                            <asp:TextBox ID="txtFtOficio" CssClass="TextboxMarcas" runat="server" ></asp:TextBox>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblItemOficio" runat="server" Text='<%# Bind("OFICIO") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="OF. TRAM. INCL.">
                        <FooterTemplate>
                            <asp:TextBox ID="txtFtTramite" CssClass="TextboxMarcas" runat="server"></asp:TextBox>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblItemTramite" runat="server" Text='<%# Bind("TRAMITE") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="TIT. REGIS.">
                        <FooterTemplate>
                            <asp:TextBox ID="txtFtTitularRegistros" CssClass="TextboxMarcas" runat="server" ></asp:TextBox>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="LblItemTitular" runat="server" Text='<%# Bind("TITULARREGISTRO") %>'></asp:Label>
                        </ItemTemplate>
                        <ItemStyle Width="400px" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="RFC TIT. REG.">
                        <FooterTemplate>
                            <asp:TextBox ID="txtrfctitular"  CssClass="TextboxMarcas" runat="server" ></asp:TextBox>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="LblItemRfcTitularReg" runat="server" Text='<%# Bind("RFCTITULARREGISTRO") %>'></asp:Label>
                        </ItemTemplate>
                        <ItemStyle Width="30px" />
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="ORIGEN">
                        <FooterTemplate>
                            <asp:TextBox ID="txtftOrigen" CssClass="TextboxMarcas" runat="server"></asp:TextBox>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblOrigen" runat="server" Text='<%# Bind("PROCEDENCIA") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="FABRICANTE">
                        <FooterTemplate>
                            <asp:TextBox ID="txtFtFabricante" CssClass="TextboxMarcas" runat="server"></asp:TextBox>
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:Label ID="lblItemFabricante" runat="server" Text='<%# Bind("FABRICANTE") %>'></asp:Label>
                        </ItemTemplate>
                        <ItemStyle Width="400px" />
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <FooterTemplate>
                            <asp:ImageButton ID="imgbtnAdd" runat="server" CommandName="Insert" Height="30px" ImageUrl="~/imagenes/Marcas/AddNewitem.jpg" ToolTip="Agregar" Width="30px" />
                        </FooterTemplate>
                        <ItemTemplate>
                            <asp:ImageButton ID="imgbtnDelete" runat="server" CommandName="Delete" Height="20px" ImageUrl="~/imagenes/Marcas/Eliminar_Icon.png" ToolTip="Eliminar" Width="20px" />
                        </ItemTemplate>
                        <ItemStyle Width="15px" />
                    </asp:TemplateField>
                </Columns>
                <EmptyDataTemplate>
                    <table class="tabla">
                        <tr>
                            <th>NOMB. CORTO</th>
                            <th class="auto-style2">REGISTRO SAN.</th>
                            <th>OF. EXIME REG.</th>
                            <th>TRAM. INCLUS.</th>
                            <th>TIT. REGIS</th>
                            <th>RFC TIT. REG.</th>
                            <th>PROCEDENCIA</th>
                            <th>FABRICANTE</th>
                            <th>&nbsp;</th>
                        </tr>
                        <tr>
                            <td>
                                <asp:TextBox ID="txtclasetab" CssClass="TextboxMarcas" runat="server"></asp:TextBox>
                            </td>
                            <td class="auto-style2">
                                <asp:TextBox ID="txtregistrotab" CssClass="TextboxMarcas" runat="server" ></asp:TextBox>
                            </td>
                            <td>
                                <asp:TextBox ID="txtoficiotab" CssClass="TextboxMarcas" runat="server"></asp:TextBox>
                            </td>
                            <td>
                                <asp:TextBox ID="txttramitetab" CssClass="TextboxMarcas" runat="server"></asp:TextBox>
                            </td>
                            <td>
                                <asp:TextBox ID="txttitulartab" CssClass="TextboxMarcas" runat="server"></asp:TextBox>
                            </td>
                            <td>
                                <asp:TextBox ID="txtrfctitularreg" CssClass="TextboxMarcas" runat="server" ></asp:TextBox>
                            </td>
                            <td>
                                <asp:TextBox ID="txtorigentab" CssClass="TextboxMarcas" runat="server"></asp:TextBox>
                            </td>
                            <td>
                                <asp:TextBox ID="txtfabricantetab" CssClass="TextboxMarcas" runat="server" ></asp:TextBox>
                            </td>
                            <td>
                                <asp:ImageButton ID="ImgBtonAgregar" runat="server" CommandName="InsertFooter" Height="28px" ImageUrl="~/imagenes/Marcas/AddNewitem.jpg" OnClick="ImageButton1_Click" Width="34px" />
                            </td>
                        </tr>
                    </table>
                </EmptyDataTemplate>
                <HeaderStyle BackColor="#61A6F8" Font-Size="1em" ForeColor="White" />
            </asp:GridView>
        </div>
    
    </asp:Content>
    

    y el codigo es: 

    using CapaEntidad;
    using CapaNegocio;
    using System;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using CapaDatos;
    
    namespace CURACION_2015
    {
        public partial class ModOferta : System.Web.UI.Page
        {
            string error = null;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    //Se ejecuta todas las veces que se carga la pagina exepto la primera vez                     
    
                }
    
                else
                {
                    // Se ejecuta solo la primera vez que se carga la pagina                 
                    this.BindGrid();
    
                }
    
            }
    
            protected void txtlicitacion_TextChanged(object sender, EventArgs e)
            {
                if (txtlicitacion.Text != "")
                {
                    RecuperaProveedores(txtlicitacion.Text);
                }
            }
    
            private void RecuperaProveedores(string Licitacion)
            {
                string error = null;
                try
                {
                    List<EntOfertas> lista = NegOfertas.Recupera_Proveedores_ofertados(this.txtlicitacion.Text);
    
                    if (lista.Count > 0)
                    {
                        this.ddproveedor.DataSource = lista;
                        this.ddproveedor.DataValueField = "PROVEEDORID";
                        this.ddproveedor.DataTextField = "RAZON_SOCIAL";
                        this.ddproveedor.DataBind();
                        this.ddproveedor.Items.Insert(0, new ListItem("Todos", "0"));
                    }
                    else
                    {
                        this.ddproveedor.Items.Clear();
                        return;
                    }
    
                }
                catch (Exception E)
                {
                    error = E.Message.ToString() + " - " + E.Source.ToString();
                }
    
            }
    
            protected void BtonBuscar_Click(object sender, EventArgs e)
            {            
                if (validaCampos(this.txtlicitacion.Text))
                {                
                    List<EntOfertas> lista = NegOfertas.Recupero_Ofertas_recibidas(txtlicitacion.Text, 0);// ordenado por claves y descuento
                    Session["Ofertas"] = lista;
    
                    if (lista.Count > 0)
                    {
                        this.GridOfertas.DataSource = lista;//NegReq.Buscar_registro_licitacion(Wlicitacion, wgpo, wgen, wesp, wdescrip, wejercicio);
                        this.GridOfertas.DataBind();
                        //this.BtonExportNuevo.Visible = true;
                        //this.BtonExportarAWord.Visible = true;
                        //CargaTabla();                                           
                    }
                }
            }
            private bool validaCampos(string Licitacion)
            {
                bool Result = true;
    
                if (txtlicitacion.Text == "")
                {
                    MessageBoxShow(this, "Proporcione numero de Licitacion.");
                    this.txtlicitacion.Focus();
                    Result = false;
                }          
    
                return Result;
            }
    
            //codigo para mostrar mensaje
            private void MessageBoxShow(Page Page, string Mensaje)
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                sb.Append("<script type = 'text/javascript'>");
                sb.Append("window.onload=function(){");
                sb.Append("alert('");
                sb.Append(Mensaje);
                sb.Append("')};");
                sb.Append("</script>");
                ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
    
                /*Literal Ltr =new Literal ();                     
                Mensaje = Mensaje.Replace("'", "\'");
                Ltr.Text = @"<script type='text/javascript'>alert('"+ Mensaje+"') </script>";
                Page.Controls.Add(Ltr);*/
            }
    
            protected void BtonCan_Click(object sender, EventArgs e)
            {
    
            }
    
            protected void GridOfertas_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                 
            }
    
            protected void GridOfertas_SelectedIndexChanged(object sender, EventArgs e)
            {
                
                
            }
    
            protected void GridOfertas_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
            {
             
               
            }
    
            protected void GridOfertas_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                this.GridOfertas.PageIndex = e.NewPageIndex;
    
                List<EntOfertas> lista = (List<EntOfertas>)Session["Ofertas"];
                this.BindGrid();
            }
            protected void BindGrid()
            {
                this.GridOfertas.Columns[8].Visible = false;
                List<EntOfertas> lista = (List<EntOfertas>)Session["Ofertas"];
                GridOfertas.DataSource = lista;
                GridOfertas.DataBind();
            }
    
            protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
            {
    
            }
            
    
            private DataTable GetData(SqlCommand cmd)
            {
                conexion cn = new conexion();
                SqlConnection cnx = cn.conectar();
    
                DataTable dt = new DataTable();
               // SqlConnection con = new SqlConnection(cn);
                SqlDataAdapter sda = new SqlDataAdapter();
                cmd.CommandType = CommandType.Text;
                cmd.Connection = cnx;
                cnx.Open();
                sda.SelectCommand = cmd;
                sda.Fill(dt);
                cnx.Close();
                return dt;           
            }
    
            protected void GridOfertas_RowCommand(object sender, GridViewCommandEventArgs e)
            {
                try
                {
                    if (e.CommandName == "Select")
                    {
    
                        int index = Convert.ToInt32(e.CommandArgument);
                        int OFERTAID = Convert.ToInt32(GridOfertas.DataKeys[index].Value);
    
                        if (OFERTAID != 0)
                        {
                            List<EntOfertas> lista = NegOfertas.Recupero_marcas_Regiso_seleccionado(OFERTAID);// envio ofetaid del proveedor seleccionado
                            Session["Marcas"] = lista;
    
                            if (lista.Count > 0)
                            {
                                this.GridMarcas.DataSource = lista;//NegReq.Buscar_registro_licitacion(Wlicitacion, wgpo, wgen, wesp, wdescrip, wejercicio);
                                this.GridMarcas.DataBind();
                                //this.BtonExportNuevo.Visible = true;
                                //this.BtonExportarAWord.Visible = true;
                                //CargaTabla();                                           
                            }        
                        }
                    }                
                }
                catch (Exception E)
                    {
                    error = E.Message.ToString() + " - " + E.Source.ToString(); 
                    }
    
            }
    
            protected void GridOfertas_RowDataBound1(object sender, GridViewRowEventArgs e)
            {
                try{
    
                 if (e.Row.RowType == DataControlRowType.DataRow)
                    {
                        ///descodifico las celdas
                        e.Row.Cells[3].Text = HttpUtility.HtmlDecode(e.Row.Cells[3].Text);//DESCRIPCION
                        e.Row.Cells[4].Text = HttpUtility.HtmlDecode(e.Row.Cells[4].Text);//LICITANTE
    
    
                       
                        //CODIGO PARA SELECCIONAR EL REGISRO
                        int OFERTAID = Convert.ToInt32(this.GridOfertas.DataKeys[e.Row.RowIndex].Values["OFERTAID"].ToString());
                        //List<EntConsAsig> lista = NegConsultaAsig.ConsultaMarcas(IdFallo);
                        List<EntOfertas> lista = NegOfertas.Recupero_marcas_Regiso_seleccionado(OFERTAID); // .ConsultaMarcas(OFERTAID); 
                        Session["Marcas"] = lista;                       
                        if (lista.Count > 0)
                        {
                            GridMarcas.DataSource = lista;
                            GridMarcas.DataBind();
    
                        }
                    }
               }
                catch (Exception E)
                {
                    error = E.Message.ToString() + " - " + E.Source.ToString();
                }       
            }
    
            protected void GridMarcas_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                try
                {
                    //decodificar la informacion de los datos de 
                    if (e.Row.RowType == DataControlRowType.DataRow)
                    {
                        // e.Row.Attributes["ondblclick"] = Page.ClientScript.GetPostBackClientHyperlink(GridMarcas, "Edit$" + e.Row.RowIndex);
                        // e.Row.Attributes["style"] = "cursor:pointer";
    
                        e.Row.Cells[0].Text = HttpUtility.HtmlDecode(e.Row.Cells[0].Text);//MARCA
                        e.Row.Cells[1].Text = HttpUtility.HtmlDecode(e.Row.Cells[1].Text);//REGISTRO
                        e.Row.Cells[2].Text = HttpUtility.HtmlDecode(e.Row.Cells[2].Text);//OFICIO
                        e.Row.Cells[3].Text = HttpUtility.HtmlDecode(e.Row.Cells[3].Text);//TRAMITE
                        e.Row.Cells[4].Text = HttpUtility.HtmlDecode(e.Row.Cells[4].Text);//TITULAR
                        e.Row.Cells[5].Text = HttpUtility.HtmlDecode(e.Row.Cells[5].Text);//RFC TITULAR
                        e.Row.Cells[6].Text = HttpUtility.HtmlDecode(e.Row.Cells[6].Text);//PROCEDENCIA
                        e.Row.Cells[7].Text = HttpUtility.HtmlDecode(e.Row.Cells[7].Text);//FABRICANTE
                    }
                }
                catch (Exception E)
                {
                    error = E.Message.ToString() + " - " + E.Source.ToString(); 
                                   
                }          
            }
            
        }
    }

    Podrian Echarme una mano.

    gracias


    Horacio Xochitemol Bautista

    miércoles, 30 de septiembre de 2015 22:54

Respuestas

  • hola

    el codigo del page_load es incorrecto, no se que hace el metodo pero imagino carga uno de los grid y eso se implementaria

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    this.BindGrid();
                }
    
            }

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 1 de octubre de 2015 1:45