Asp.net Gridview内部中继器未触发删除事件
我有一个中继器,其中有一个gridview,它使用带有delete命令的SqlDataSource。当我在给定行上单击delete时,它会发回,但不会触发delete。我忘了什么吗?您设置了GridView的设置了吗?需要将其设置为项的主键,以唯一标识要修改的记录。如果未进行设置,单击“删除”(或“编辑”)将导致回发,但回发不会影响任何内容,因为a未与每个GridView行关联 根据该页面: 当DataKeyNames属性为 设置GridView控件 自动创建数据键 控件中每行的。 DataKey对象包含 一个或多个字段的值 在DataKeyName中指定 财产 例如,假设您正在删除由ProductID字段标识的产品项 您的SqlDataSource可能如下所示:Asp.net Gridview内部中继器未触发删除事件,asp.net,gridview,repeater,Asp.net,Gridview,Repeater,我有一个中继器,其中有一个gridview,它使用带有delete命令的SqlDataSource。当我在给定行上单击delete时,它会发回,但不会触发delete。我忘了什么吗?您设置了GridView的设置了吗?需要将其设置为项的主键,以唯一标识要修改的记录。如果未进行设置,单击“删除”(或“编辑”)将导致回发,但回发不会影响任何内容,因为a未与每个GridView行关联 根据该页面: 当DataKeyNames属性为 设置GridView控件 自动创建数据键 控件中每行的。 DataKe
<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand= "SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]"
DeleteCommand="DELETE FROM Products WHERE ProductID = @ProductID">
<DeleteParameters>
<asp:Parameter Name="ProductID" />
</DeleteParameters>
</asp:SqlDataSource>
是否设置了GridView的设置?需要将其设置为项的主键,以唯一标识要修改的记录。如果未进行设置,单击“删除”(或“编辑”)将导致回发,但回发不会影响任何内容,因为a未与每个GridView行关联
根据该页面:
当DataKeyNames属性为
设置GridView控件
自动创建数据键
控件中每行的。
DataKey对象包含
一个或多个字段的值
在DataKeyName中指定
财产
例如,假设您正在删除由ProductID字段标识的产品项
您的SqlDataSource可能如下所示:
<asp:SqlDataSource ID="ProductsDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand= "SELECT [ProductID], [ProductName], [UnitPrice] FROM [Products]"
DeleteCommand="DELETE FROM Products WHERE ProductID = @ProductID">
<DeleteParameters>
<asp:Parameter Name="ProductID" />
</DeleteParameters>
</asp:SqlDataSource>
首先,你应该为清晰的问题添加一些代码。任何试图帮助你的人都会问你一些代码。
依我看,,
*如果您正在使用按钮、链接按钮、图像
执行删除操作,则可能忘记使用命令名
在GridView列中声明的CommandField:
<asp:CommandField ShowDeleteButton="True" />
*另外,您是否在回发操作之间使用UpdatePanel???首先,您应该添加一些代码以明确问题。任何试图帮助您的人都会询问您一些代码。
依我看,,
*如果您正在使用按钮、链接按钮、图像
执行删除操作,则可能忘记使用命令名
在GridView列中声明的CommandField:
<asp:CommandField ShowDeleteButton="True" />
*另外,您是否在回发操作之间使用UpdatePanel???我刚刚建立了一个非常基本的示例,没有任何问题。如果不发布代码(正如许多其他人所要求的那样),我们就无法为您提供太多帮助
下面是我的示例中的代码—这里没有什么棘手的问题,只需将字符串数组绑定到中继器,并使用指定的select和delete命令将gridview绑定到sqldatasource
我所能想到的是,您的数据源没有指定delete命令/方法(但您会得到一个明确的错误),或者您没有在gridview中指定DataKeyName(但您也会得到一个明确的错误)
行:
和数据源(来自我已设置的现有数据库)
我刚刚建立了一个非常基本的示例,没有任何问题。如果不发布代码(正如许多其他人所要求的那样),我们就无法为您提供太多帮助
下面是我的示例中的代码—这里没有什么棘手的问题,只需将字符串数组绑定到中继器,并使用指定的select和delete命令将gridview绑定到sqldatasource
我所能想到的是,您的数据源没有指定delete命令/方法(但您会得到一个明确的错误),或者您没有在gridview中指定DataKeyName(但您也会得到一个明确的错误)
行:
和数据源(来自我已设置的现有数据库)
是的,我在我的应用程序中成功地使用了这个gridview设置,并且我确实指定了DataKeyName。数十个其他gridview与此gridview之间的唯一区别在于,它是中继器的子项。是的,我在我的应用程序中成功地使用了此gridview设置,并且我确实指定了DataKeyName。数十个其他GridView与此GridView之间的唯一区别是它是一个repeater的子版本。您能提供一个源代码的和平版本吗?命令无法启动有很多原因。请提供一个源代码的和平版本好吗?命令不能发出的原因有很多。
e.Cancel = true //remove it
<asp:Repeater ID="rp" runat="server">
<ItemTemplate>
<p>Row: <%#Container.DataItem%></p>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" DataKeyNames="CroppingID">
<Columns>
<asp:CommandField ShowDeleteButton="True" />
<asp:BoundField DataField="CroppingID" HeaderText="CroppingID" ReadOnly="True" SortExpression="CroppingID" />
<asp:BoundField DataField="CroppingName" HeaderText="CroppingName" SortExpression="CroppingName" />
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:sConn %>" DeleteCommand="spD_Cropping"
DeleteCommandType="StoredProcedure" SelectCommand="spS_Croppings"
SelectCommandType="StoredProcedure">
<DeleteParameters>
<asp:Parameter Name="CroppingID" Type="Byte" />
</DeleteParameters>
</asp:SqlDataSource>