Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to refresh Gridview after pressed a button in asp.net

I am trying to make a simple library database. I list the search results in a gridview, then i have a textbox and a button, user enters the isbn and clicks loan button. Then, if there is enough number of items (itemNumber>0) it is loaned by user. Here is the screenshot of user interface:

enter image description here

My question is, when user clicks loan button the loan may or may not be succesful. In both cases, i print a message indicating whether loan is succesful or not, and i also want the updated gridview to be displayed. The problem is, after pressing the loan button the gridview disappears and i just see the textbox, button and the message on the screen. How can i show the updated version of gridview after pressing loan button?

Here is the code file:

<%@ 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>

      

And here is the .cs file:

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();


}
}

And here is the code for loan button:

 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();


}

I appreciate any help. Thanks

like image 793
yrazlik Avatar asked May 29 '13 19:05

yrazlik


People also ask

How to update GridView data in asp net on button click?

In grid view, there must be two links (select and delete) starting of every row. when clicked on select link, the selected row details must appear in registration form with corresponding field values inside text boxes and after modifying those details and clicked on update button, details must be updated to database.

How to update GridView data in asp net?

Set the Command name property to Edit in the Edit button, Update in the Update button and Cancel in the Cancel Button depending on their respective Events. Add OnRowEditing, OnRowUpdating and OnRowCancelingEdit events to the GridView.


3 Answers

All you have to do is In your bLoanButton_Click , add a line to rebind the Grid to the SqlDataSource :

protected void bLoanButton_Click(object sender, EventArgs e)
{

//your same code
........

GridView1.DataBind();


}

regards

like image 195
Adam Avatar answered Oct 23 '22 17:10

Adam


I was totally lost on why my Gridview.Databind() would not refresh.

My issue, I discovered, was my gridview was inside a UpdatePanel. To get my GridView to FINALLY refresh was this:

gvServerConfiguration.Databind()
uppServerConfiguration.Update()

uppServerConfiguration is the id associated with my UpdatePanel in my asp.net code.

Hope this helps someone.

like image 9
John Waclawski Avatar answered Oct 23 '22 18:10

John Waclawski


Before data bind change gridview databinding method, assign GridView.EditIndex to -1. It solved the same issue for me :

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

gvTypes is my GridView ID.

like image 1
tsiva124 Avatar answered Oct 23 '22 19:10

tsiva124