2013-05-29 29 views
6

私は単純なライブラリデータベースを作ろうとしています。検索結果をグリッドビューに表示し、次にテキストボックスとボタンがあり、ユーザーはisbnを入力してローンボタンをクリックします。次に、十分な数の項目がある場合(itemNumber> 0)、ユーザーによって貸し出されます。ここでは、ユーザインターフェースのスクリーンショットです:asp.netのボタンを押した後にGridviewをリフレッシュする方法

enter image description here

私の質問があり、利用者がローンがまたは成功してもしなくてもよいローンのボタンをクリックしたとき。どちらの場合も、ローンが成功したかどうかを示すメッセージが表示され、更新されたグリッドビューも表示されます。問題は、ローンボタンを押した後に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 Fである。ここでは

は、コードファイルでありますILE:

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


} 

私は任意の助けに感謝。 )(私は完全になぜ私のGridview.Databindに失われた

答えて

29

、SqlDataSourceコントロールにグリッドを再バインドするための行を追加します。リフレッシュしませんでした。

私の問題は、私が見つけたのは、私のgridviewがUpdatePanelの中​​にあったことです。 に私のGridViewを取得するには、FINALLYリフレッシュがこのでした:

gvServerConfiguration.Databind() 
uppServerConfiguration.Update() 

"uppServerConfigurationは、" 私のasp.netコードで私のUpdatePanelに関連付けられているIDです。

これは誰かを助けることを望みます。

5

protected void bLoanButton_Click(object sender, EventArgs e) 
{ 

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

GridView1.DataBind(); 


} 

について:おかげ

あなたがしなければならないのは、あなたのbLoanButton_Clickである
0

データバインドを変更する前に、gridviewデータバインドの方法をGridView.EditIndexに-1を割り当てます。それは私のために同じ問題を解く:

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

gvTypesは私のGridViewのIDです。

0

ボタンのクリックイベントにGridView1.DataBind()を追加することができませんでした。ただし、それをSqlDataSource1_Updatedイベントに追加することはできませんでした。

Protected Sub SqlDataSource1_Updated(sender As Object, e As SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Updated 
    GridView1.DataBind() 
End Sub 
関連する問題