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 Comentarios

  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

Dejar respuesta

Please enter your comment!
Please enter your name here