C# 使用ObjectDataSource从Gridview中删除记录

C# 使用ObjectDataSource从Gridview中删除记录,c#,.net,asp.net,gridview,objectdatasource,C#,.net,Asp.net,Gridview,Objectdatasource,我有一个gridview,它从对象方法绑定其行: 公共数据集GetObjects() { 数据集ds=新数据集(); DataTable dt=新的DataTable(); var source=来自CommentsList中的p 选择新的{p.CommentID,p.Img,p.Name,p.Comment} dt.Columns.Add("CommentsID"); dt.Columns.Add("Img"); dt.Columns.Add("Name"); dt.Columns.Add("

我有一个gridview,它从对象方法绑定其行:

公共数据集GetObjects() { 数据集ds=新数据集(); DataTable dt=新的DataTable(); var source=来自CommentsList中的p 选择新的{p.CommentID,p.Img,p.Name,p.Comment}

dt.Columns.Add("CommentsID");
dt.Columns.Add("Img");
dt.Columns.Add("Name");
dt.Columns.Add("Comment");

foreach (var item in source)
{



    DataRow userDetailsRow=dt.NewRow();
    userDetailsRow["Img"] = item.Img;
    userDetailsRow["Name"] = item.Name;

    DataRow commentsID = dt.NewRow();
    userDetailsRow["CommentsID"] = item.CommentID;

    DataRow comments = dt.NewRow();
    userDetailsRow["Comment"] = item.Comment;
    dt.Rows.Add(userDetailsRow);
    //dt.Rows.Add(comments);
}
ds.Tables.Add(dt);
return ds;
} 我的删除方法。应接收commentsID以将其从数据库中删除,然后重新绑定Gridview。。但是怎么做呢?我是否将CommentsID从gridview传递到此方法 public void RemoveComment(int CommentsID) { }

GridView有两个模板:

 <Columns>
      <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Label ID="lblMessage" runat="server"  Text='<%# Bind("Comment") %>'></asp:Label>
                        </ItemTemplate>
       </asp:TemplateField>

           <asp:TemplateField>
                        <ItemTemplate>
                            <asp:Image ID="imgName" runat="server"  imageUrl='<%# Bind("Img") %>'></asp:Image><br />
                            <asp:Hyperlink ID="hyperLink" runat="server"  Text='<%# Bind("Name") %>' ></asp:Hyperlink>
                        </ItemTemplate>
       </asp:TemplateField>
   </Columns>



现在,我想删除一行,我该怎么做?我知道DataKeyName是存在的。但是如何将commentsID设置为我的DataKeyName,以及如何删除记录?

您可以为objectDataSource指定
删除方法,这将非常简单…例如

 <asp:ObjectDataSource ID="ods" runat="server" DeleteMethod="RemoveComment" SelectMethod="GetCityByStateID" TypeName="">
        <DeleteParameters>
            <asp:Parameter Name="CommentsID" Type="Int32" />
         </DeleteParameters>
          <SelectParameters>
          </SelectParameters>
  </asp:ObjectDataSource>


无论何时点击Gridview删除按钮,都会自动触发此方法并删除记录。

我知道我可以。但是delete方法不需要一些参数来获取。。。要知道删除什么。我在gridview CommentsID的DataKeyName中设置了。。但是如何将CommentsID键传递给delete方法呢?要删除该记录吗?您不必担心,它将自动拾取。你能看看我上面更新的代码是否正确吗。它是否删除记住我放入内存中的集合并在数据集中形成该集合,它会将键传递给我,我需要在我的方法中应用该键..并生成一条sql语句来删除注释?ObjectDataSource delete方法将自动选择DataKeyName。您的Delete方法应该使用一个参数作为int,即commentId。因此,上面的所有内容都是正确的。。将传递一个参数。。信息是从数据集中检索出来的吗?