簡體   English   中英

ASP.NET GridView按鈕事件

[英]ASP.NET GridView Button Event

我正在嘗試在gridview中觸發按鈕事件。 我用以下代碼創建了一個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#或Web服務中編寫代碼,有時僅在Silverlight中進行編碼。 但是這次我想用asp.net做到這一點。

您應該在GridView中添加OnRowCommand事件,然后實現事件處理程序。 在Button上,而不是在實現OnClick上,您應該僅提供CommandName和CommandArgument屬性,即:

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

然后,在OnRowCommand事件處理程序中,您可以添加代碼

string test = "test";

即使您未指定CommandName屬性,單擊Button也會始終觸發OnItemCommand事件,但是,這允許您在一行上具有多個按鈕,以便每個按鈕執行不同的功能。 CommandArgument允許您提供功能性參數。 例如,如果您想傳遞所看到的人員的ID,則可以傳遞CommandArgument =“ <%#Eval(” PersonID“)%>

我嘗試了你說的話。 以非常簡單的方式。 我注意到gridview沒有onItemCommand事件觸發,但是我只是使用了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的buttontype更改為“ pushbutton”,它會再次給出相同的錯誤。 它與linkbutton一起使用...有什么區別? 我真的很想有一個按鈕,因為鏈接看起來很難看;)

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM