我正在尝试触发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做这件事。
答案 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>
像这样有效。但是,如果我创建一个带有按钮的模板列,它会产生相同的错误。另外..如果我将按钮列的按钮类型更改为“按钮”,它再次给出相同的错误。它适用于链接按钮......有什么区别?我真的想要一个按钮,因为链接看起来很难看;)
干杯