【问题标题】:Deleting a record from Gridview with ObjectDataSource使用 ObjectDataSource 从 Gridview 中删除记录
【发布时间】:2011-07-12 08:12:19
【问题描述】:

我有一个从对象方法绑定其行的网格视图:

公共数据集 GetObjects() { 数据集 ds = new DataSet(); 数据表 dt = 新数据表(); var source = from p in CommentsList 选择新的 { 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;

} 我的删除方法。应该收到 cmetsID 以将其从数据库中删除,然后重新绑定 Gridview .. 但是如何?我是否将来自 gridview 的 CommentsID 传递给此方法 公共无效删除评论(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 存在..但是如何将 cmetsID 设置为我的 dataKeyNames,以及如何删除记录?

【问题讨论】:

    标签: c# .net asp.net gridview objectdatasource


    【解决方案1】:

    您可以将Delete method 指定给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 删除按钮时,都会自动触发此方法并删除记录。

    【讨论】:

    • 我知道我可以。但是删除方法不需要一些参数来获取...知道要删除的内容。我在gridview CommentsID 的datakeynames 中设置了。但是如何将CommentsID 键传递给delete 方法?删除记录?
    • 你不用担心,它会自动挑选。只需使用它并尝试。
    • 你能看看我上面更新的代码是否正确。它是否删除记得我放入内存并在数据集中形成该集合的集合,它传递给我的密钥,我需要在我的方法中应用它..并提出一个 sql 语句来删除评论?
    • ObjectDataSource Delete 方法会自动选择 DataKeyName。您的 Delete 方法应采用一个 int 参数,即 commentId。
    • 所以上面的一切都是对的..会传递一个参数..然后从数据集中检索信息?
    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多