【问题标题】:Understanding the delete link in ASP.NET Dynamic Data scaffolds了解 ASP.NET 动态数据脚手架中的删除链接
【发布时间】:2010-02-26 13:31:31
【问题描述】:

由于 ASP.NET 动态数据网页的自动脚手架完成了我需要为这个项目做的大部分事情,我想以此为基础。

现在,我想在我的自定义表格视图中添加另一个链接到“编辑”“删除”“详细信息”三重奏。我希望它的行为类似于“删除”按钮,即不调用另一个页面,而是在后台执行某些操作(此处:发送电子邮件。)然后刷新视图。唉,我不明白这个“删除”链接是如何工作的。

在自动生成的代码中定义为

<asp:LinkButton ID="DeleteLinkButton" 
     runat="server" CommandName="Delete"
     CausesValidation="false" Text="Delete"
     OnClientClick='return confirm("Are you sure you want to delete this item?");'/>

这里到底发生了什么?代码中是否有一个名为“Delete”的方法(如在 CommandName 属性中使用的)?那里传递了哪些论据?并且:如何调用自定义方法?

我尝试使用调试器单步执行它,但在 LINQ 数据类中很容易松懈,所以我什么也没找到。

提前致谢!

【问题讨论】:

    标签: c# asp.net linq dynamic-data


    【解决方案1】:

    Delete CommandName 通常与数据源标签下同一页面上的等效 DeleteCommand 相关联,例如:

     <asp:SqlDataSource ID="SqlDataSourcePending" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ConnectionStringPending %>" 
            DeleteCommand="DELETE FROM [CSNTable] WHERE [ID] = @ID" 
            InsertCommand="INSERT INTO [CSNTable] ([CSNDate], [CSNStatus], [CSNAuthor], [CSNSubject], [CSNMessage]) VALUES (@CSNDate, @CSNStatus, @CSNAuthor, @CSNSubject, @CSNMessage)" 
            SelectCommand="SELECT ID, CSNDate, CSNStatus, CSNAuthor, CSNSubject, CSNMessage FROM CSNTable WHERE (CSNStatus LIKE 'Pending')" 
            UpdateCommand="UPDATE [CSNTable] SET [CSNDate] = @CSNDate, [CSNStatus] = @CSNStatus, [CSNAuthor] = @CSNAuthor, [CSNSubject] = @CSNSubject, [CSNMessage] = @CSNMessage WHERE [ID] = @ID">
            <DeleteParameters>
                <asp:Parameter Name="ID" Type="Int16" />
            </DeleteParameters>
            <UpdateParameters>
                .........etc...
    

    您可以通过数据源控件属性或页面配置删除命令。

    就新命令而言,通常的方法是添加一个新的链接按钮,将命令名称更改为对您想要执行的操作有意义的名称CommandName="EmailNotice"

    然后通过评估 eventargs.CommandName (e.CommandName) 在 {YourDataTableName}_ItemCommand 事件中捕获此按钮单击命令名,这是非常笼统的说法,因为我不知道您的自定义数据表是由什么组成的。当 e.CommandName=="EmailNotice" 时,你就做你需要的。

    编辑: Linq 有点不同!可以参考this MSDN article,不过主要还是使用GetCommand方法

    【讨论】:

    • 感谢您的提示!我的 DataSource 是一个 LinqDataSource……也许这就是魔法隐藏的地方。
    • 刚刚更新了主要答案,提供了更多信息,因为我知道您现在正在使用 Linq
    猜你喜欢
    • 1970-01-01
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    相关资源
    最近更新 更多