How to update gridview after clicking a button in asp.net

I am trying to create a simple library database. I list the search results in gridview, then I have a text box and a button, the user enters a button with isbn and clicks clips. Then, if the number of items is sufficient (itemNumber> 0), it is loaned by the user. Here is a screenshot of the user interface:

enter image description here

My question is: when the user clicks the loan button, the loan may or may not be successful. In both cases, I print a message about whether the loan is successful or not, and also want the updated gridview to be displayed. The problem is that after clicking the loan button the gridview disappears and I just see the text box, button and message on the screen. How can I show an updated version of gridview after clicking the 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 the credit 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

+6
source share
4 answers

All you have to do is add a line in your bLoanButton_Click to migrate the Grid to SqlDataSource:

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

considers

+30
source

I was completely lost why my Gridview.Databind () did not update.

My problem, I discovered, was my gridview inside the UpdatePanel. To get the gridview value for FINALLY , this is:

 gvServerConfiguration.Databind() uppServerConfiguration.Update() 

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

Hope this helps someone.

+5
source

Before data binding, bind the gridview data binding method, assign GridView.EditIndex -1. He solved the same problem for me:

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

gvTypes is my GridView ID.

0
source

Adding GridView1.DataBind () to the button click event did not help me. However, adding it to the SqlDataSource1_Updated event has occurred.

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

Source: https://habr.com/ru/post/946111/


All Articles