Estoy golpeando una pared con un Gridview en ASP.NET CSHTML.

En Page Load, tengo este código para iniciar el llenado de datos.

protected void Page_Load(object sender, EventArgs e)
        {
            Orisoftds = new DataSet();
            using (SqlConnection appCon = new SqlConnection(appdb))
            {

                SqlDataAdapter orisoftAdapter = new SqlDataAdapter(fillist, appCon);
                orisoftAdapter.Fill(Orisoftds, "Staff_List");
            }
            GridView1.DataSource = Orisoftds.Tables["Staff_List"];
        }

Con esto, el GridView1 ahora tendrá un DataSource

En mi página web tengo estos tres controles:

enter image description here

En este proyecto, el usuario tendrá que completar su ID en el cuadro de texto y al hacer clic en el botón enviar, se completará el GridView.

En el botón Enviar, tengo este código:

protected void EmpIDSubmit_Click(object sender, EventArgs e)
        {
            string eID = empIDTextBox.Text;

            ((DataTable)GridView1.DataSource).DefaultView.RowFilter = "EMPLOYEE_ID = " + eID;

        }

Me falta algo, ya que en el momento en que ingreso una ID en el cuadro de texto, la página simplemente hará algo o parece que se actualizó sin hacer nada.

¿Hay alguna diferencia entre llenar un Gridview en WinForms y HTML?

El resultado debe contener una vista de cuadrícula que muestre solo el perfil del usuario filtrado según su ID dada.

-1
Mohd Nasrul Iwan Fajaruddin 25 sep. 2019 a las 07:16

3 respuestas

La mejor respuesta

Falta GridView1.Databind() para DataBind con Gridview,

Utilice esta línea después de:

GridView1.DataSource = Orisoftds.Tables["Staff_List"]; 
1
Prashant Pimpale 25 sep. 2019 a las 06:58

Respuesta: me falta el enlace de datos.

GridView1.DataBind();

Tuve un problema donde incluso después del enlace de datos, el resultado no se mostró.

Aparentemente, el botón Enviar tiene una configuración de PostBackUrl rota ya que estaba probando otro método anteriormente.

Eliminé mi botón y lo reemplacé por uno nuevo, ahora los resultados se muestran correctamente.

Ya no necesito usar un método de procedimiento almacenado como:

using (SqlConnection appCon = new SqlConnection(appdb))
{
    using (SqlCommand cmd = new SqlCommand("StoredProcedureName", appCon))
    {
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.AddWithValue("@EMPLOYEE_ID", empIDTextBox.Text);

         using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
         {
            DataTable dt = new DataTable();
            sda.Fill(dt);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
    }
 }

Gracias a todos.

0
marc_s 23 nov. 2019 a las 22:00

Creo que te falta el método DataBind. Intente llamar a GridView1.Databind() en su evento EmpIDSubmit_Click.

0
sthurston 25 sep. 2019 a las 05:34