在ASP.NET中的ListView中创建自定义按钮

时间:2011-02-24 06:22:37

标签: asp.net listview sqldatasource

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

修改

我已经尝试过你所说的,citronas,这就是我的想法:

<td>
    <asp:CheckBox ID="CheckBox1" runat="server" />
</td>
<td>
    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="ViewButtonClick" CommandArgument='<%# Eval("ServiceId") %>'>View</asp:LinkButton>
</td>

以下是我想要调用的方法:

protected void ViewButtonClick(object sender, CommandEventArgs e)
    {
        var serviceId = Convert.ToInt32(e.CommandArgument);

        ServiceToView = DataAccessLayer.Service.Select(new Service { ServiceId = serviceId });
        Server.Transfer("~/ViewService.aspx");
    }

不幸的是没有发生任何事情......我错过了什么吗?

编辑 - 修正

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

2 个答案:

答案 0 :(得分:1)

您可以将LinkBut​​ton添加到ListView的ItemTemplate中  将标识每条记录的值绑定到LinkBut​​ton的CommandArgument 订阅LinkBut​​ton的Command-Event。在那里你可以访问CommandEventArgs.CommandArgument

答案 1 :(得分:0)

你做了什么工作Storm。我决定和Citronas一起去#39;建议并分享我的答案。

<强> FIRST: 在aspx上,我使用自己的CommandName和CommandArgument为我的ItemTemplate添加了一个LinkBut​​ton。我将我的项目ID作为CommandArgument传递给了我以后可以在我的sub中使用它。

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

<强> SECOND: 在代码隐藏中,我创建了一个sub,只要用户执行了一个动作就会调用它。正如Citronas通常提到的那样,您使用&#34;选择&#34;,&#34;添加&#34;,&#34;编辑&#34;或&#34;删除&#34;这里。我决定创建&#34;答案&#34;。

注意:处理MyControl.ItemCommand非常重要,因为它是订阅命令事件的。

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

完成!现在,由于每个命令都通过新子命令,因此检查正确的commandName非常重要,这样您就可以执行相应的操作。不要忘记使用CommandArgument。