在ASP.NET的列表视图中创建自定义按钮

在ASP.NET的列表视图中创建自定义按钮,asp.net,listview,sqldatasource,Asp.net,Listview,Sqldatasource,我有一个Results.aspx页面,显示通过ListView使用SqlDataSource对象查询的结果记录。我想添加一个“查看”按钮,该按钮将出现在每条记录旁边,单击该按钮后,我将进入一个单独的页面,该页面将显示该记录的详细信息。我如何做到这一点 编辑 我已经试过你说的了,西特龙,下面是我想到的: <td> <asp:CheckBox ID="CheckBox1" runat="server" /> </td> <td> <

我有一个Results.aspx页面,显示通过ListView使用SqlDataSource对象查询的结果记录。我想添加一个“查看”按钮,该按钮将出现在每条记录旁边,单击该按钮后,我将进入一个单独的页面,该页面将显示该记录的详细信息。我如何做到这一点

编辑 我已经试过你说的了,西特龙,下面是我想到的:

<td>
    <asp:CheckBox ID="CheckBox1" runat="server" />
</td>
<td>
    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="ViewButtonClick" CommandArgument='<%# Eval("ServiceId") %>'>View</asp:LinkButton>
</td>
不幸的是,什么都没有发生……我是不是错过了什么

编辑-修复
我错过了什么!我的CommandName等于我的方法名,而不是OnCommand。我取出CommandName,保留参数位,并用OnCommand替换CommandName。现在一切正常,但我需要CommandName做什么?

您可以在ListView的ItemTemplate中添加链接按钮。
将标识每条记录的值绑定到LinkButton的CommandArgument。

订阅LinkButton的命令事件。在这里,您可以访问CommandEventArgs.CommandArgument

您最后所做的工作。我决定接受Citronas的建议并分享我的答案

第一名: 在aspx上,我用自己的CommandName和CommandArgument向ItemTemplate添加了一个LinkButton。我将项目的ID作为CommandArgument传递,以便稍后在sub中使用它

<asp:LinkButton ID="lnkBtnAnswers" runat="server" CommandName="Answers"
     CommandArgument='<%# Eval("ID")%>'>Answers</asp:LinkButton>

完成了!现在,由于每个命令都经过新的子命令,因此检查正确的commandName非常重要,这样您就可以执行适当的操作。别忘了使用CommandArgument对您有利。

@Storm Kiernan:OnCommand是指定服务器端方法的地方,如果有人单击该按钮,就会调用该方法。查看GridView可以更好地解释CommandName。您可以执行不同种类的“操作”,如“选择”、“添加”、“编辑”和“删除”“。GridView提供了一个RowCommand事件,在该事件中,您可以使用开关大小写并相应地调用指定CommandName的其他方法。您还可以指定自己的CommandName,就像您以前尝试过的那样。如果在GridView中添加自定义按钮,如“向客户发送电子邮件”,这是有意义的
<asp:LinkButton ID="lnkBtnAnswers" runat="server" CommandName="Answers"
     CommandArgument='<%# Eval("ID")%>'>Answers</asp:LinkButton>
Protected Sub lvQuestions_Command(sender As Object, e As CommandEventArgs) Handles lvQuestions.ItemCommand
    If e.CommandName.ToLower() = "answers" Then
          hfSelectedQuestionID.Value = e.CommandArgument
    End If
End Sub