C# 如何从gridview向SQlDataSource传递参数?

C# 如何从gridview向SQlDataSource传递参数?,c#,asp.net,gridview,sqldatasource,C#,Asp.net,Gridview,Sqldatasource,Gridview有许多列和一个删除按钮。“删除”按钮是一个控件,如TemplateField <asp:TemplateField> <ItemTemplate> <asp:LinkButton ID="btnDelete" CommandName="Delete" Text='<%# Eval("disabled").ToString()=="False" ? "Disabled" : "Enabled" %>' OnClientCli

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)


如何实现它?

我建议在代码隐藏中实现它。在btnDelete上单击,我将遍历gridview中的每一行并检查所有DataKeyName。一旦我找到了你想要删除的那个,你就需要把它发回给你。您可以使用linq、ado.net之类的orm,也可以使用直接的sqlcmd

请查看此代码。我执行和工作良好

<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>