Pasar datos de fila gridview a textbox

Soy muy novata en Asp.net, quisiera que me ayudaran tengo un problema que no he podido resolver, tengo un AspxGridView estoy utilizando data source para traer los datos desde la bd de sql, y he colocado al lado AspxTextBox, lo que necesito es que cuando seleccione una fila del grid se manden los datos a dichos textbox.. He intentado con javascript y con algunos eventos del grid como rowfocusedchanged, y no he conseguido poder llevarlo a cabo, además el código que he encontrado es de C# y lo que necesito es vb.net, ¿también me pregunto si mis problemas se deban a que estoy utilizando master pages..? Estoy desesperada! Ojalá me puedan ayudar!

1 respuesta

Respuesta
1
Lo que puedes hacer es que si ya por lo menos manejas el evento de seleccionar un row del grid view entonces en el textbox pongas el dato de la columna del grid por medio del indice del row.
Otra es que esa lista que traes de alguna base y si la tienes en una lista genérica, la guardes en una variable de sesión entonces cuando tengas el id del grid que desde luego corresponderá con el id de la lista genérica casteas la variable de sesión la conviertes a la lista y accedes al elemento con el indice y de ahí tomas el dato para tu textbox.
Así es, manejo el evento de seleccionar la fila del datagrid, pero en realidad estoy algo perdida, lo que intento realizar es algo parecido a lo que hay en esta página
http://demos.devexpress.com/ASPxGridViewDemos/Rows/FocusedRow.aspx
Solo que con la diferencia de que en mi caso no es necesario traer una foto, lo que es diferente ademas es que en el ejemplo se utiliza un AspxMemo.. en cambio yo requiero utilizar aspxTextBox... siempre he encontrado ejemplo de grid normales, a diferencia de mi que utilizo un aspxgridview.. te copio la función de javascript y los controles textbox, no se si se requiera agregar algún evento al grid, ademas de que no se como mandar llamar la función de javascript desde el código de visual.
------SCRIPT-----------
<script language="javascript" type="text/javascript">
    function OngvCatTipoGeneralFocusedRowChanged() {
        gvCatTipoGeneral.GetRowValues(gvCatTipoGeneral.GetFocusedRowIndex(), 'IdTipoGeneral;DesTipo', OnGetRowValues);
        function OnGetRowValues(values) {
            txtClaTip.SetText(values[0]);
            txtDesc.SetText(values[1]);
        }
    }
</script>
------GRIDVIEW------
<dxwgv:ASPxGridView ID="gvCatTipoGeneral" ClientInstanceName ="gvCatTipoGeneral" runat="server"
               CssFilePath="~/App_Themes/Glass/{0}/styles.css" CssPostfix="Glass"
               DataSourceID="sdsCatTipoGeneral" Width="500px"
               KeyFieldName="IdTipoGeneral" PreviewFieldName ="DesTipo">
                    <Styles CssFilePath="~/App_Themes/Glass/{0}/styles.css" CssPostfix="Glass">
                        <Header ImageSpacing="5px" SortingImageSpacing="5px"></Header>
                    </Styles>
                    <SettingsBehavior AllowFocusedRow="True"/>
                   <ClientSideEvents FocusedRowChanged="function(s, e) { OngvCatTipoGeneralFocusedRowChanged() ; }" />
------TEXTBOX------
<td><dxe:ASPxTextBox ID="txtClaTip" runat="server" Height="24px" Width="75px"
          ClientInstanceName="txtClaTip" ReadOnly="true" AutoPostBack= "true"></dxe:ASPxTextBox>
<td colspan="5"><dxe:ASPxTextBox ID="txtDesc" runat="server" ClientInstanceName="txtDesc" AutoPostBack="true"></dxe:ASPxTextBox>
Mm, no, más bien seria algo como esto:
En el archivo Default.aspx, estaria esto:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditRowStyle BackColor="#999999" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" />
<asp:BoundField DataField="Nombre" HeaderText="Nombre" />
<asp:CommandField HeaderText="Seleccionar" SelectText="Crear" ShowSelectButton="True" />
</Columns>
</asp:GridView>
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></div>
</form>
</body>
</html>
 Y en el en el archivo Default.aspx.cs:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//Suponiendo que esta lista es tu origen de datos.....
IList lista = new ArrayList();
lista.Add(new Datos("1", "Juanito"));
lista.Add(new Datos("2", "fulano"));
lista.Add(new Datos("3", "Ana"));
lista.Add(new Datos("4", "Samuel"));
lista.Add(new Datos("5", "Fulgencio"));
GridView1.DataSource = lista;
GridView1.DataBind();
}
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
TextBox1.Text = ((GridView)sender).SelectedRow.Cells[0].Text;
TextBox2.Text = ((GridView)sender).SelectedRow.Cells[1].Text;
}
}
-------Espero te pueda servir, saludos y todo es manejado con C#, sin usar javascript.
Muchas gracias! Ya solucioné el problema.. pero tengo una cuestión con mi asp.. no se que pase cuando debugueo para ver donde esta el error cuando llega al sub del focusedrowchanged m manda al "show disassembly" : ( no sé a que se deba esto pero revisé el proyecto en una computadora diferente, en la cuál si sirvió t agradezco mucho tu ayuda.. ahora el buscar el porqué me manda a eso que te comento... ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas