我想用NHibernate的API函数删除datagrid上面的指定列,请问怎么实现呢?

解决方案 »

  1.   

    设置DataGrid的DataKeyField,根据指定列的DataKey new一个Object,然后调用ISession的Delete就可以把
      

  2.   

    但是我设置了DataKeyField后出示我的ID无效啊??
    请问xyunsh(学海无涯,回头是岸) ,可不可以给出具体的代码呢?这样我不是很明白啊
      

  3.   

    我的代码这样写,但是就是不行啊private void dataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    if(e.CommandName=="delete1")
    {
    SessionFactory=cfg.BuildSessionFactory();
    ISession session=SessionFactory.OpenSession();
    string mainkey=this.dataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    string hsql="from KeJiJuLingDao,XiangMuYuanGong where ID='"+mainkey+"'";
    IQuery query=session.CreateQuery(hsql);
    IList list=query.List();
    dataGrid1.DataSource=list;
    ITransaction transaction=session.BeginTransaction();
    try
    {
    session.Delete(list);
    transaction.Commit();
    }
    catch(Exception ee)
    {
    Response.Write("<script language=javascript> alert('"+ee.Message+"');</script>");
    }
    finally
    {
    session.Close();
    }
    }
      

  4.   

    ID无效是因为你的数据源中没有ID这一列吧
      

  5.   

    string mainkey=this.dataGrid1.DataKeys[e.Item.ItemIndex].ToString();这个能吧mainkey取出来么?
      

  6.   

    我以前没有用NHibernate的时候在datagrid的删除上面是这样写的啊
      

  7.   

    假设DataGrid的数据来自表tbl1,对应的map类未class1,class1的key为ID
    删除应该为:
    string mainkey=this.dataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    class1 obj = new class1();
    class1.ID = mainkey;
    session.Delete(obj)
      

  8.   

    谢谢你,我成功了,但是插入的时候又出现“could not insert ……”的问题,代码如下:SessionFactory=cfg.BuildSessionFactory();
    ISession session=SessionFactory.OpenSession();
    string mainkey=this.dataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    KeJiJuLingDao obj=new KeJiJuLingDao();
    obj.ID=Convert.ToInt32(mainkey);
    obj.ShenHe=0;
    ITransaction transaction=session.BeginTransaction();
    try
    {
    session.Save(obj);
    transaction.Commit();
    Response.Write("<script language=javascript> alert('此用户已成功审核通过!');</script>");
    BindGrid();
    }请问什么问题呢?
      

  9.   

    这里应该是session save(obj)的时候,插入了相同的ID,所以不能插入,那么怎么能取得相应的datagrid的行然后插入呢?郁闷啊
      

  10.   

    string mainkey=this.dataGrid1.DataKeys[e.Item.ItemIndex].ToString();
    好像你应该用Update吧
    你这条记录已经存在数据库中了啊