我有一个gridview,它从对象方法绑定它的行:
public DataSet GetObjects() { DataSet ds = new DataSet(); DataTable dt = new DataTable(); var source = from 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 ..但是如何?将gridID中的CommentsID传递给此方法 public void RemoveComment(int CommentsID) { }
GridViews两个模板:
<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>
现在,我想删除一行,我该怎么做?我知道DataKeyNames存在..但是如何将commentsID设置为我的dataKeyNames,以及如何删除记录?
答案 0 :(得分:3)
您可以为objectDataSource指定Delete method
,这将非常简单......例如。
<asp:ObjectDataSource ID="ods" runat="server" DeleteMethod="RemoveComment" SelectMethod="GetCityByStateID" TypeName="">
<DeleteParameters>
<asp:Parameter Name="CommentsID" Type="Int32" />
</DeleteParameters>
<SelectParameters>
</SelectParameters>
</asp:ObjectDataSource>
每当点击Gridview删除按钮时,这将自动触发此方法并删除记录。