日期:2014-05-18  浏览次数:20421 次

ObjectDataSource与GridView绑定问题.
测试项目是3层写的

页面拖一个GridView,一个ObjectDataSource.
绑定好后.数据正常显示出来,编辑,插入操作都可以.就是删除列不行.

我问了别人说是,我没设置GridView的DataKeyNames属性,我又把DataKeyNames属性绑上了ID.但是还是不能删除.
其他操作都行.编辑插入都行,就是删除不行,我确定删除的数据库代码是对的.

是怎么回事呢

HTML code

        <asp:GridView ID="gvDisplay" runat="server" AllowPaging="True" 
            AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="ObjectDataSource1">
            <Columns>
                <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
                <asp:BoundField DataField="Sex" HeaderText="Sex" SortExpression="Sex" />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:BoundField DataField="Age" HeaderText="Age" SortExpression="Age" />
                <asp:BoundField DataField="Address" HeaderText="Address" 
                    SortExpression="Address" />
                <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
                    ShowSelectButton="True" />
            </Columns>
        </asp:GridView>
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
            DataObjectTypeName="Model.Person" DeleteMethod="Delete" InsertMethod="Insert" 
            SelectMethod="SelectAll" TypeName="BLL.Bll_Person" UpdateMethod="Update">
        </asp:ObjectDataSource>




------解决方案--------------------
删除的方法里面需要有个对应的参数
他的参数值对应为ID的值。
------解决方案--------------------
先用Command对象直接执行你的删除sql语句,比如delete from student where id=10,如果成功了的话
调试下你的程序,看看最后你的程序是不是没组装出正确的sql语句,或者出错了。
也可以事件探查器跟踪下,看看你的sql语句到没到数据库端。