zoukankan      html  css  js  c++  java
  • ObjectDataSource“ObjectDataSource1”未能找到带参数的非泛型方法

    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);
    }

  • 相关阅读:
    设计模式之观察者模式
    设计模式之建造者模式
    设计模式之外观模式
    设计模式之模板方法模式
    设计模式之原型模式
    自己动手写计算器v1.1
    自己动手写计算器v1.0
    Guid的使用
    设计模式学习---代理类
    StringBuilder的使用
  • 原文地址:https://www.cnblogs.com/noahsky/p/1114635.html
Copyright © 2011-2022 走看看