Asp.net
按下asp.net中的按鈕後如何刷新Gridview
我正在嘗試製作一個簡單的圖書館數據庫。我在 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。
希望這可以幫助某人。
