我有一个Repeater,它有一个GridView,它使用一个带有删除命令的SqlDataSource。当我点击给定行上的删除时,它会回发,但不会触发删除。我忘记了什么吗?Repeater中的Gridview不能触发Delete事件
回答
您是否设置了GridView的DataKeyNames property?它需要设置为该项目的主键来唯一标识要修改的记录。如果您没有设置它,单击删除(或编辑)将导致回发,因为DataKey未与每个GridView行关联,所以回发不会影响任何内容。
按照GridView.DataKeys property页:
当DataKeyNames属性是 集,GridView控件 自动创建用于控制每行一个DataKey 对象。 DataKey对象包含在DataKeyNames 属性中指定的字段或字段 的 值。
例如,假设您要删除由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>
然后,您可以分配相同的“产品ID”主键,把GridView的DataKeyNames属性:
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"
DataKeyNames="ProductID" ...
这些教程可能对你有帮助:
是的,我成功地在我的应用程序中成功使用了这个gridview设置,并且我指定了DataKeyNames。其他几十个gridviews和这个gridview之间的唯一区别就是它是一个转发器的孩子。 – 2009-09-21 18:19:55
首先,你应该添加清晰questions.Anyone谁将会尽力帮助您会问你一些代码一些代码。
在我看来, *如果您正在使用Button,LinkButton,Image
删除操作的可能是你忘了使用的CommandName
CommandField中这是在GridView的列声明:
<asp:CommandField ShowDeleteButton="True" />
模板列可能是:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkDelete" runat="server" CommandName="Delete" Text="Delete"/>
</ItemTemplate>
</asp:TemplateField>
above declara当点击链接时tions将有相同的结果。检查您已成功分配CommandName属性。
*其他意见,如果你看起来更详细OnRowDeleting情况下,如果你在你使用回传操作之间的UpdatePanel设置
e.Cancel = true //remove it
*也?
我刚刚设置了一个没有问题的非常基本的例子。如果没有发布代码(其他许多人已经要求),我们可以帮您解决的问题并不多。
下面是我的示例中的代码 - 这里没有任何棘手,只是将字符串数组绑定到中继器,并使用指定的select和delete命令将gridview绑定到sqldatasource。
我能想到的是,你的数据源没有指定delete命令/方法(但你会得到一个明确的错误),或者你没有在gridview中指定的DataKeyNames(但你也会得到一个明确的错误)。
<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>
- 1. GridView的事件不触发
- 2. checkbox_oncheckedchange事件不在gridview中触发
- 3. 为什么我的Silverlight Datagrid Delete Button不能触发事件?
- 4. 的GridView OnRowCommand事件不触发
- 5. GridView的RowCommand事件不触发
- 6. GridView的OnPageIndexChanging事件不会触发
- 7. 的GridView PageIndexChanging事件不触发
- 8. ASP.NET GridView的RowUpdating事件不触发
- 9. ASP.Net 4.0 OnSelectedIndexChanged事件不在ItemTemplate(Repeater)中触发
- 10. Repeater中的按钮不会触发ItemCommand
- 11. GridView中的DropDownList SelectedIndexChanged不能触发!
- 12. Backbone.js DELETE请求不能触发
- 13. Click事件不能在HorizBar中触发
- 14. Gridview RowCommand事件是当我在GridView中排序时触发的
- 15. 按钮点击事件不在asp.net中触发gridview控件
- 16. 可在不同标签上触发的事件不能触发
- 17. Drop事件不触发/ JS中触发
- 18. GridView中的Dropdownlist不会触发selectedindex更改事件
- 19. 确认GridView事件中的单选按钮不会触发
- 20. UpdatePanel中GridView的自定义分页不会触发PageIndexChanging事件
- 21. 的Javascript事件不会触发功能
- 22. 我不能触发“click”事件,jQuery的
- 23. Backbone.js的不能赶上触发事件
- 24. BackboneJS:REST DELETE不会触发destroy()
- 25. Winrt触发器和Gridview ItemClick事件
- 26. ASP GridView排序事件没有触发
- 27. GridView SelectedIndexChanged事件未被触发
- 28. Gridview ImageButton OnCommand事件未被触发
- 29. GridView排序事件未触发
- 30. Radiobutton检查更改事件不在GridView中触发
可否请你提供的源代码中的和平?命令不会触发的原因有很多。 – Arthur 2009-09-27 09:39:33