在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
自从dataset内部可以内建TableaDapter以后 ,貌似所有人的数据访问类都可以自动过期了 无论你是要login,count(*) , groupby 还是select into 你所要做的只是在相应的数据表的TableAdapter下面Add Query 更可恶的是^_^,貌似这是M$推荐的的 ObjectDataSource的绑定对象——IDE直接生成的唯一的(或者说唯一被我发现的)数据对象。 Well,如果是你推荐的 我自然要学习学习了。让我们来看看M$给我们提供了什么………… ——————————我是分隔线———————————— 打开vs2005IDE New->Website http://localhost/ObjectDatasourceSite/ 点击解决方案管理器 right click website -〉add new item ->dataset->Dataset1.xsd 忽略所有的向导 然后从服务器资源管理器拖拽一个数据表(northwind的Emoloyees看起来不错) ,放到已经打开的Dataset1.xsd里面 ok 我们有了一个装满字母的小房子 ,而且我们的数据访问对象作为地基已经在那里准备好fill something了 按照m$一贯的作风 我们来建立简单的数据绑定访问应用吧 dblclick default.aspx 扔一个GridView到这张新打开的纯洁的画布上 datasourceid->new datasource -->objectdatasource 继续 objectdatasource向导 指定employoeesTableAdapter为我们的业务类 接着连续next ,标准的M$操作不是么? 然后回到gridview ,right click ->show Smart Tag 把里面的增删改对号都打开 看起来我们有了一个不错的M$风格的数据绑定,应该可以正常工作了>_<。 然后我们打开“正常工作”的页面 Edit 然后Update 哈哈 熟悉的黄色屏幕出现了~ ObjectDataSource 'ObjectDataSource1' could not find a non-generic method 'Update' that has parameters: LastName, FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address, City, Region, PostalCode, Country, HomePhone, Extension, Photo, Notes, ReportsTo, PhotoPath, original_EmployeeID, Original_LastName, Original_FirstName, Original_Title, Original_TitleOfCourtesy, Original_BirthDate, Original_HireDate, Original_Address, Original_City, Original_Region, Original_PostalCode, Original_Country, Original_HomePhone, Original_Extension, Original_ReportsTo, Original_PhotoPath.Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.Exception Details: System.InvalidOperationException: ObjectDataSource 'ObjectDataSource1' could not find a non-generic method 'Update' that has parameters: LastName, FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address, City, Region, PostalCode, Country, HomePhone, Extension, Photo, Notes, ReportsTo, PhotoPath, original_EmployeeID, Original_LastName, Original_FirstName, Original_Title, Original_TitleOfCourtesy, Original_BirthDate, Original_HireDate, Original_Address, Original_City, Original_Region, Original_PostalCode, Original_Country, Original_HomePhone, Original_Extension, Original_ReportsTo, Original_PhotoPath. Source Error:
Stack Trace: 并不是我的设置缺少了什么 根据错误提示 是Gridview 生成的参数与 Tableadpter的参数不符合。 这绝对是bug 解决问题的步骤 1 把ObjectDataSource Update的参数 最后一个 keyfield (这个表是EmployeeID)删除 2 把GridView 的datakeyName 删除 3 把GridView 的keyfield列设置成可读可写 4 reconfig TableAdapter 在高级选项把并发读写那个对号去掉 (后3步是规避这个bug的另外一种表现,生成全null的original_{0}参数) 这样你将得到一个愚蠢的需要更新keyfield的绑定表(用模板列可以规避这个问题,那是后话)而且没有并发检查的能力 目前这是我能让gridview\ObjectDataSource和TableAdapter协同工作的唯一办法 希望大家能给我指出条更好的途径 |
请发表评论