通过对DetailsView的AutoGenerateDeleteButton属性设置为true来自动生成删除按钮.
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="SqlDataSource1"
     Height="50px" Width="125px" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" 
     AutoGenerateInsertButton="True" AllowPaging="True" OnItemCreated="DetailsView1_ItemCreated"  
     OnItemDeleted="DetailsView1_ItemDeleted" >
</asp:DetailsView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$   
     ConnectionStrings:aConnectionString>"
     SelectCommand="SELECT * FROM [aa]" 
     DeleteCommand="DELETE FROM [aa] WHERE [a] = @a" 
     InsertCommand="INSERT   INTO [aa] ([a], [b],[c]) VALUES (@a, @b, @c)" 
     UpdateCommand="UPDATE [aa] SET [b] = @b, [c] = @c WHERE [a] = @a">
            <DeleteParameters>
                <asp:Parameter Name="a" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="b" Type="Int32" />
                <asp:Parameter Name="c" Type="Int32" />
                <asp:Parameter Name="a" Type="Int32" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="a" Type="Int32" />
                <asp:Parameter Name="b" Type="Int32" />
                <asp:Parameter Name="c" Type="Int32" />
            </InsertParameters>
        </asp:SqlDataSource>
为什么编辑,新建和更新都没问题,就在删除时出错,提示"必须声明标量变量 '@a'。 ".
如果我把  DeleteCommand="DELETE FROM [aa] WHERE [a] = @a" 改成
  DeleteCommand="DELETE FROM [aa] WHERE [a] = @ab" 

<DeleteParameters>
<asp:Parameter Name="a" Type="Int32" />
</DeleteParameters>
改成
<DeleteParameters>
<asp:Parameter Name="ab" Type="Int32" />
</DeleteParameters>
则在删除时不出错,但没任何反应,数据库中数据没有任何变化.
请高手解决.谢谢.

解决方案 »

  1.   

    <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="SqlDataSource1" 
        Height="50px" Width="125px" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" 
        AutoGenerateInsertButton="True" AllowPaging="True" OnItemCreated="DetailsView1_ItemCreated"  
        OnItemDeleted="DetailsView1_ItemDeleted" DataKeyNames="a"
    </asp:DetailsView> 
      

  2.   

    添加DataKeyNames="a"后问题解决了,大哥受累,告诉我这是为什么啊