Gridview还有许多列和一个删除按钮。删除按钮是一个控件,如TemplateField
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="btnDelete" CommandName="Delete" Text='<%# Eval("disabled").ToString()=="False" ? "Disabled" : "Enabled" %>'
OnClientClick="return confirm('Are you sure you want to take this action?');"
runat="server"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
现在关联的SQLDataSource的Delete命令的存储过程需要两个参数。一个是来自DataKeyNames(RowID),另一个我要传递的是btnDelete的文本(True或False)。
我怎样才能实现它?
答案 0 :(得分:1)
我建议在后面的代码中执行此操作。在btnDelete上单击我将迭代gridview中的每一行并检查所有datakeynames。一旦我找到了你要删除的那个,你需要将它发回给你db。您可以使用像linq,ado.net或直接sqlcmd这样的orm。
答案 1 :(得分:0)
请参阅此准则。我实现并且工作正常
<asp:TemplateField HeaderText="Add" HeaderStyle-CssClass="grid_Title">
<ItemTemplate>
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%# Eval("TrackID")%>' />
<asp:SqlDataSource ID="SqlDataSource_Projects" runat="server" ConnectionString="<%$ ConnectionStrings:SentricMusicFunctionalityConnectionString2 %>"
SelectCommand="select* from MassTraxCatProjects where Fk_AgencyId=@CatalogAgencyId and fk_trackid=@TrackID) ">
<SelectParameters>
<asp:SessionParameter DbType="Int32" DefaultValue="CatalogAgencyId" Name="CatalogAgencyId"
SessionField="CatalogAgencyId" />
<asp:ControlParameter DefaultValue="TrackID" Name="TrackID" ControlID="**HiddenField1**" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownList ID="ddl_ProjectType" runat="server" DataSourceID="SqlDataSource_Projects"
Width="100px" DataTextField="ProjectName" DataValueField="ProjectId">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>