Asp.net

按下asp.net中的按鈕後如何刷新Gridview

  • April 16, 2018

我正在嘗試製作一個簡單的圖書館數據庫。我在 gridview 中列出搜尋結果,然後我有一個文本框和一個按鈕,使用者輸入 isbn 並點擊貸款按鈕。然後,如果有足夠數量的項目(itemNumber>0),則由使用者借出。這是使用者界面的螢幕截圖:

在此處輸入圖像描述

我的問題是,當使用者點擊貸款按鈕時,貸款可能成功也可能不成功。在這兩種情況下,我都會列印一條消息,指示貸款是否成功,並且我還希望顯示更新的網格視圖。問題是,按下貸款按鈕後,gridview 消失了,我只看到螢幕上的文本框、按鈕和消息。按下貸款按鈕後如何顯示gridview的更新版本?

這是程式碼文件:

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

  

   

這是 .cs 文件:

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


}
}

這是貸款按鈕的程式碼:

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


}

我很感激任何幫助。謝謝

您所要做的就是在您的 bLoanButton_Click 中,添加一行以將 Grid 重新綁定到 SqlDataSource :

protected void bLoanButton_Click(object sender, EventArgs e)
{

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

GridView1.DataBind();


}

問候

我完全不知道為什麼我Gridview.Databind()不會刷新。

我發現我的問題是我的 gridview 在 UpdatePanel 中。讓我的 GridView 最終刷新是這樣的:

gvServerConfiguration.Databind()
uppServerConfiguration.Update()

uppServerConfiguration是在我的 asp.net 程式碼中與我的 UpdatePanel 關聯的 ID。

希望這可以幫助某人。

引用自:https://stackoverflow.com/questions/16821880