ASP.NET GridView按钮事件

时间:2009-10-02 07:23:18

标签: asp.net gridview button events

我正在尝试触发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#或webservices编写代码,有时候只用silverlight代码。但是这次我想用asp.net做这件事。

2 个答案:

答案 0 :(得分:2)

您应该在GridView中添加一个OnRowCommand事件,然后实现一个事件处理程序。在Button上而不是实现OnClick,你应该只提供CommandName和CommandArgument属性,即:

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

然后在您的OnRowCommand事件处理程序中,您可以添加代码

string test = "test";

单击按钮将始终触发OnItemCommand事件,即使您未指定CommandName属性,但是这允许您在一行上有多个按钮,以便每个按钮执行不同的功能。 CommandArgument允许您为functionallity提供参数。例如,如果您想传递您所看到的人的ID,您可以传递CommandArgument =“&lt;%#Eval(”PersonID“)%&gt;

答案 1 :(得分:0)

我试过你说的话。以一种非常简单的方式。我注意到gridview没有onItemCommand eventtrigger,但我只使用了数据网格。

<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>

像这样有效。但是,如果我创建一个带有按钮的模板列,它会产生相同的错误。另外..如果我将按钮列的按钮类型更改为“按钮”,它再次给出相同的错误。它适用于链接按钮......有什么区别?我真的想要一个按钮,因为链接看起来很难看;)

干杯