Cómo actualizar Gridview después de pulsar un botón en asp.net

Estoy tratando de hacer una simple base de datos de biblioteca. Yo de la lista de los resultados de la búsqueda en un gridview, entonces tengo un textbox y un botón, el usuario entra en el isbn y los clics de préstamo botón. Entonces, si hay suficiente número de elementos (itemNumber>0) es prestado por el usuario. Aquí está la captura de pantalla de la interfaz de usuario:

Cómo actualizar Gridview después de pulsar un botón en asp.net

Mi pregunta es, cuando el usuario hace clic en préstamo botón el préstamo puede o puede no ser exitoso. En ambos casos, puedo imprimir un mensaje que indica si el préstamo es exitoso o no, y también quiero la actualización del gridview para mostrarse. El problema es que, después de pulsar el préstamo botón gridview desaparece y acabo de ver el cuadro de texto, botón y el mensaje en la pantalla. ¿Cómo puedo mostrar la versión actualizada de gridview después de pulsar préstamo botón?

Aquí está el archivo de código:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SearchResults.aspx.cs" Inherits="Pages_SearchResults" %>

<!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></title>
</head>
<body>
<form id="form1" runat="server">
<div>

</div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataKeyNames="ISBN" DataSourceID="SqlDataSource1" 
    onselectedindexchanged="GridView1_SelectedIndexChanged" 
    onrowcommand="GridView1_RowCommand">
    <Columns>
        <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
        <asp:BoundField DataField="ISBN" HeaderText="ISBN" ReadOnly="True" 
            SortExpression="ISBN" />
        <asp:BoundField DataField="AuthorName" HeaderText="AuthorName" 
            SortExpression="AuthorName" />
        <asp:BoundField DataField="AuthorlName" HeaderText="AuthorlName" 
            SortExpression="AuthorlName" />
        <asp:BoundField DataField="ItemType" HeaderText="ItemType" 
            SortExpression="ItemType" />
        <asp:BoundField DataField="PublishYear" HeaderText="PublishYear" 
            SortExpression="PublishYear" />



        <asp:BoundField DataField="numOfCopies" HeaderText="Number of Copies" 
            SortExpression="numOfCopies" />



    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT * FROM [Items] WHERE ([Title] LIKE '%' + @Title + '%')">
    <SelectParameters>
        <asp:FormParameter FormField="tSearchBox" Name="Title" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>
<br />
<asp:Label ID="Label1" runat="server" Text="Type ISBN to loan:"></asp:Label>

  

   

Y aquí está la .cs archivo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

public partial class Pages_SearchResults : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    Response.Redirect("Default.aspx");
}


protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\Users\\SUUSER\\Documents\\Visual Studio 2010\\Projects\\Library\\LibWebSite\\App_Data\\LibDatabase.mdf;Integrated Security=True;User Instance=True";

    Int32 verify;

    string title = GridView1.HeaderRow.Cells[0].Text, isbn = GridView1.HeaderRow.Cells[1].Text, name = GridView1.HeaderRow.Cells[2].Text, lname = GridView1.HeaderRow.Cells[3].Text, type = GridView1.HeaderRow.Cells[4].Text, year = GridView1.HeaderRow.Cells[5].Text;


}
protected void bLoanButton_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\Users\\SUUSER\\Documents\\Visual Studio 2010\\Projects\\Library\\LibWebSite\\App_Data\\LibDatabase.mdf;Integrated Security=True;User Instance=True";

    string user = "select CurrentID from CurrentUser";

    SqlCommand cmd1 = new SqlCommand(user, con);
    con.Open();
    string get = cmd1.ExecuteScalar().ToString();

    string query1 = "insert into LoanTable(StudId,ISBN,onBorrow) values ("
        + "'" + get + "'" + "," + "'" + tLoanBox.Text + "'" + ","
        + "'" + "1" + "'" + ")";

    string numQuery = "select numOfCopies from Items where ISBN='" + tLoanBox.Text + "'";

    SqlCommand cmdnumQuery = new SqlCommand(numQuery, con);

    SqlCommand cmd2 = new SqlCommand(query1, con);

    int result;

    int num=Convert.ToInt32(cmdnumQuery.ExecuteScalar());


    result = cmd2.ExecuteNonQuery();

    if (num > 0)
    {

        if (result > 0)
            Response.Redirect("LoanSuccesfull.aspx");
    }
    else
        notAvailable.Visible = true;

    con.Close();


}
}

Y aquí está el código para préstamo botón:

 protected void bLoanButton_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename=D:\\Users\\SUUSER\\Documents\\Visual Studio 2010\\Projects\\Library\\LibWebSite\\App_Data\\LibDatabase.mdf;Integrated Security=True;User Instance=True";

    string user = "select CurrentID from CurrentUser";

    SqlCommand cmd1 = new SqlCommand(user, con);
    con.Open();
    string get = cmd1.ExecuteScalar().ToString();

    string query1 = "insert into LoanTable(StudId,ISBN,onBorrow) values ("
        + "'" + get + "'" + "," + "'" + tLoanBox.Text + "'" + ","
        + "'" + "1" + "'" + ")";





    SqlCommand cmd2 = new SqlCommand(query1, con);

    int result;




    result = cmd2.ExecuteNonQuery();



        if (result > 0)
        {
            loanSuccesful.Visible = true;
            Response.Redirect("LoanSuccesfull.aspx");

        }





    con.Close();


}

Agradezco cualquier ayuda. Gracias

OriginalEl autor yrazlik | 2013-05-29

4 respuestas

  1. 32

    Todo lo que tienes que hacer es En su bLoanButton_Click , agregue una línea para volver a enlazar la Cuadrícula para el SqlDataSource :

    protected void bLoanButton_Click(object sender, EventArgs e)
    {
    
    //your same code
    ........
    
    GridView1.DataBind();
    
    
    }

    que respecta a

    OriginalEl autor Adam

  2. 8

    Yo estaba totalmente perdido en el por qué de mi Gridview.Databind() no se actualizan.

    Mi problema, he descubierto, es mi gridview estaba dentro de un UpdatePanel. Para obtener mi GridView a FINALMENTE actualización fue este:

    gvServerConfiguration.Databind()
    uppServerConfiguration.Update()

    uppServerConfiguration es el identificador asociado con mi UpdatePanel en mi asp.net código.

    Espero que esto ayude a alguien.

    OriginalEl autor John Waclawski

  3. 0

    Antes de enlazar datos de cambio de control gridview de enlace de datos método, asignar GridView.EditIndex a -1. Solucionado el mismo problema para mí :

     gvTypes.EditIndex = -1;
     gvTypes.DataBind();

    gvTypes es mi GridView ID.

    OriginalEl autor tsiva124

  4. 0

    Añadir el GridView1.DataBind() para el evento de clic de botón no funciona para mí. Sin embargo, la adición a la SqlDataSource1_Updated evento lo hizo.

    Protected Sub SqlDataSource1_Updated(sender As Object, e As SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Updated
        GridView1.DataBind()
    End Sub

    OriginalEl autor marc

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *