了解ASP.NET动态数据支架中的删除链接

时间:2010-02-26 13:31:31

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

由于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数据类中松散自己,所以我什么也没找到。

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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