当前位置:  开发笔记 > 编程语言 > 正文

GridView中的多个DataKeyNames

如何解决《GridView中的多个DataKeyNames》经验,为你挑选了1个好方法。

我有一个从ObjectDataSource填充的GridView,其DataKeyNames字段中有两个项目.一个是主键,ID,另一个是类别字段(类别字段用于添加标题行以描述类别).

显示工作正常,但我正在尝试创建删除操作.对象的delete方法只需要ID字段和ObjectDataSource,即使我将方法定义为只需要一个ID字段,.net也会抱怨,因为它正在寻找一个同时具有DataKeyNames中定义的字段的方法.

如果我将类别的参数添加到delete方法,它可以工作,但是定义一个不用于任何东西的参数很烦人.

我可以将ObjectDataSource和GridView对象配置为具有DataKeyNames的两个值,但具体应该传递给哪些方法?

这两个对象的(简化)定义是:


    
        
       
        
    



        
            
            
            
                
                    Delete
                
            
        
    

小智.. 9

所有DataKey值将始终传递给Delete方法,因为DataKeyNames指定的字段旨在成为在GridView中唯一标识该项的字段.它们经常被用于更多,以便在ViewState中逐行地轻松维护额外的字段,但这样做会产生您在ObjectDataSource方法中看到的副作用.

要回答您的原始问题,不,您不能将Data包含在DataKeyNames中而不将其传递给Delete方法.但是,您可以通过将值放在模板列中的隐藏输入中来维护ViewState中的值.但是,获取该值比忽略Delete方法的参数更有意义.



1> 小智..:

所有DataKey值将始终传递给Delete方法,因为DataKeyNames指定的字段旨在成为在GridView中唯一标识该项的字段.它们经常被用于更多,以便在ViewState中逐行地轻松维护额外的字段,但这样做会产生您在ObjectDataSource方法中看到的副作用.

要回答您的原始问题,不,您不能将Data包含在DataKeyNames中而不将其传递给Delete方法.但是,您可以通过将值放在模板列中的隐藏输入中来维护ViewState中的值.但是,获取该值比忽略Delete方法的参数更有意义.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有