您的位置:首页 > 移动开发 > Objective-C

ObjectDataSource“ObjectDataSource1”未能找到带参数的非泛型方法

2008-03-20 13:12 363 查看
ObjectDataSource的使用的函数最好将变量名和数据库字段名统一,否则可能会出现错误虽然有解决办法,但没必要浪费时间去玩那个,不就是变量名吗,无所谓的啦。如果需要使用ObjectDataSource控件的更新和删除功能,一般是根据主键进行修改的,但是我在使用这个功能的时候,由于把主键这个字段设置为了readonly(主键不能更新),结果传回去的时候主键值就没有了,后来想了个办法,用cookieparam作为主键的来源,在gridview或者detailsview控件更新、删除之前(响应事件)将主键值写入cookie,感觉有点笨,不过功能没什么问题。
我发现自己真的很笨耶,晕死了。想要取回主键ID值,不用cookie那么麻烦去做,虽然可以实现功能,但肯定不好。

下面的方法应该才是正确的方法:

指定GridView或者DetailsView的 DataKeyNames 属性,比如你的主键ID是ID,则指定DataKeyNames"ID"

在objectdatasource或者其他数据源控件指定参数,如下:

这样就可以传过去了

下面是我的一些代码:

DetailsView :

<yyc:SmartGridView ID="SmartGridView1" runat="server" AllowPaging="True" DataKeyNames="UserName" DataSourceID="ObjectDataSource1" AutoGenerateColumns="False" AutoGenerateDeleteButton="True">

<Columns>

<asp:BoundField DataField="UserName" HeaderText="用户名" SortExpression="UserName" ReadOnly="True"/>

<asp:BoundField DataField="Email" HeaderText="邮箱" SortExpression="Email"/>

<asp:BoundField DataField="PasswordQuestion" HeaderText="问题" SortExpression="PasswordQuestion" />

<asp:BoundField DataField="Comment" HeaderText="回答" SortExpression="Comment" />

<asp:BoundField DataField="IsApproved" HeaderText="是否启用" SortExpression="IsApproved" />

<asp:BoundField DataField="CreateDate" HeaderText="创建时间" SortExpression="CreateDate" />

<asp:BoundField DataField="LastLoginDate" HeaderText="上次登录时间" SortExpression="LastLoginDate" />

<asp:BoundField DataField="LastActivityDate" HeaderText="上次激活时间" SortExpression="LastActivityDate" />

<asp:BoundField DataField="LastPasswordChangedDate" HeaderText="上次变更密码时间" SortExpression="LastPasswordChangedDate" />

<asp:BoundField DataField="UserId" HeaderText="用户ID" SortExpression="UserId" />

<asp:BoundField DataField="IsLockedOut" HeaderText="是否锁定" SortExpression="IsLockedOut" />

<asp:BoundField DataField="LastLockoutDate" HeaderText="解除锁定时间" SortExpression="LastLockoutDate" />

<asp:CommandField ShowDeleteButton="True" ButtonType="Button"/>

</Columns>

</yyc:SmartGridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetUsers" TypeName="UsersManager" DeleteMethod="DelUser">

<DeleteParameters>

<asp:Parameter Name="UserName" Type="String" />

</DeleteParameters>

</asp:ObjectDataSource>
业务层代码:
[DataObjectMethod(DataObjectMethodType.Delete, true)]

public bool DelUser(string UserName)

{

return Membership.DeleteUser(UserName);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐