2009-10-02 93 views
0

我試圖在GridView中觸發按鈕事件。我使用下面的代碼創建了一個gridview:ASP.NET GridView按鈕事件

<asp:GridView id="ItemsGrid2" BorderColor="black" CellPadding="3" 
       BorderWidth="1" HeaderStyle-BackColor="DarkSlateGray" HeaderStyle-ForeColor="White" 
      AutoGenerateColumns="false" AllowSorting="true" OnSortCommand="Sort_Grid" 
       runat="server" align="center" Font-Name="Verdana" Font-Size="8"> 
       <Columns> 
       <asp:BoundField DataField="Title" HeaderText="Title"/> 
       <asp:BoundField DataField="Year" HeaderText="Year" /> 
       <asp:BoundField DataField="Score" HeaderText="Score" /> 
       <asp:BoundField DataField="Genre" HeaderText="Genre" /> 
       <asp:HyperLinkField HeaderText="Link" DataTextField="Link" DataNavigateUrlFields="Link"/> 
       <asp:TemplateField HeaderText="Seen"> 
        <ItemTemplate> 
         <asp:Button runat="server" Text="Seen" OnClick="Save_Check"/> 
        </ItemTemplate> 
       </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 

我將數據綁定到數據集,這一切都正常。 但現在我試圖觸發Save_Check事件,只是看起來像:

public void Save_Check(object sender, EventArgs e) 
     { 
      string test = "test"; 
     } 

不過,我總是得到一個錯誤:「關於重新發布應用程序服務器錯誤,錯誤的參數」。 (這是在荷蘭,所以我試圖儘可能清楚地翻譯它)。

任何想法?我不是asp.net的專家。我通常只使用c#或webservices編碼,有時使用silverlight。但是這次我想用asp.net來做。

回答

2

您應該在GridView中添加一個OnRowCommand事件,然後實現一個事件處理程序。在您的按鈕,而不是執行的OnClick你應該optionaly只需要提供屬性的CommandName和CommandArgument即:

<asp:Button ID="Button1" runat="server" Text="Seen" CommandName="Seen" CommandArgument='<%#Eval("RecordID") %>'/> 

然後在你的OnRowCommand事件處理程序,您可以將您的代碼

string test = "test"; 

按鈕的點擊會總是觸發OnItemCommand事件,即使您沒有指定CommandName屬性,但是這可以讓您在一行上有多個按鈕,以便每個按鈕都可以執行不同的功能。 CommandArgument允許你爲你的函數提供一個參數。例如,如果你想傳遞你所看到的人的ID,你可以通過CommandArgument =「<%#Eval(」PersonID「)%>

0

我嘗試了你所說的。注意到,GridView控件不具備onItemCommand eventtrigger,但我只是用一個DataGrid來代替。

<asp:DataGrid ID="ItemsGrid" AutoGenerateColumns="false" runat="server" OnItemCommand="Save_Check"> 
       <Columns> 
        <asp:BoundColumn DataField="Title" HeaderText="Title"></asp:BoundColumn> 
        <asp:ButtonColumn DataTextField="Year"></asp:ButtonColumn> 
       </Columns> 
      </asp:DataGrid> 

喜歡這個工作的。但是,如果我創建裏面的按鈕TemplateColumn中,它給出了同樣的錯誤。也..如果我將buttoncolumn的按鈕類型更改爲「按鈕」,它會再次提供相同的錯誤。它與linkbutton一起工作...有什麼區別?我真的想要一個按鈕cuz鏈接只是看起來難看;)

乾杯

+0

對不起,我錯誤地給了你如何在DataList上實現它的建議。請檢查我的修訂答案,您應該使用OnRowCommand而不是OnItemCommand – 2009-10-02 09:05:15