2015-11-29 43 views
1

我在將列添加到GridView時遇到問題,這會觸發存儲過程的啓動。在Gridview中啓動存儲過程

我正在試圖製作一個圖書館應用程序。

我在GridView中顯示可用書籍,我需要添加一個新列,從中可以存儲存儲過程的觸發器並獲取列id_book作爲存儲過程的參數。

這是我的筆記輸出。我需要什麼。謝謝你的幫助。

  • 添加一個新的列借書。
  • 在每一列都有一個鏈接,將觸發存儲過程,並從當前行獲取id_book。我的GridView標記

enter image description here

部分:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id_book" DataSourceID="SqlDataSource1"> 
    <Columns> 
     <asp:BoundField DataField="id_book" HeaderText="id_book" InsertVisible="False" ReadOnly="True" SortExpression="id_book" /> 
     <asp:BoundField DataField="book_name" HeaderText="book_name" SortExpression="book_name" /> 
     <asp:BoundField DataField="id_author" HeaderText="id_author" SortExpression="id_author" /> 
     <asp:CheckBoxField DataField="state" HeaderText="state" SortExpression="state" /> 
    </Columns> 
</asp:GridView> 

我的存儲過程:

CREATE PROCEDURE [dbo].[lendBook_sp] 
    @id_reader int, 
    @id_book int 
AS 
BEGIN 
    INSERT INTO dbo.lendBook (id_book, id_reader, lendDate) 
    VALUES (@id_book, @id_reader, GETDATE()) 

    UPDATE dbo.book 
    SET state = 0 
    WHERE id_book = @id_book 
END 
+0

你有沒有嘗試調用存儲過程的代碼? – CurseStacker

+0

仍然沒有,因爲我不知道,我如何從當前行獲取id_book,我推。 – tomas

回答

1

在這裏,我已經編輯HTML代碼中添加列到網格

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id_book" DataSourceID="SqlDataSource1" OnRowCommand="gridView_RowCommand" > 
<Columns> 
    <asp:BoundField DataField="id_book" HeaderText="id_book" InsertVisible="False" ReadOnly="True" SortExpression="id_book" /> 
    <asp:BoundField DataField="book_name" HeaderText="book_name" SortExpression="book_name" /> 
    <asp:BoundField DataField="id_author" HeaderText="id_author" SortExpression="id_author" /> 
    <asp:CheckBoxField DataField="state" HeaderText="state" SortExpression="state" /> 

    <asp:ButtonField CommandName="EditRow" Text="Lend" CausesValidation=false></asp:ButtonField> 
</Columns> 

以下是事件的C#代碼,當用戶單擊「借出」鏈接時將調用該事件。

protected void gridView_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName.Equals("EditRow")) 
    { 
     int _bookIDEdit = Convert.ToInt32(GridView1.DataKeys[Convert.ToInt32(e.CommandArgument.ToString())].Values["id_book"].ToString()); 

    } 
} 

將BookID獲取到整數變量後,可以調用StoredProcedure。

+0

哦,就是這樣。非常感謝。 – tomas