我在DataGrid上加了一列删除列,如果绑定的表是一个主键的话,应该是在绑定的时候this.DataGrid1.DataKeyField = "主键";
然后在删除事件中用:string id=this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString();来取出主键的值,滞后就是用主键来更改数据库了。但我的表用的是联合主键,我就不会删除了。我的表:create table voteDetails
(
       voteID int foreign key references voteMaster(voteID),
       voteDetailsID int not null,
       voteItem varchar(20) not null,
       voteNum int default 0,
       primary key(voteID,voteDetailsID)
)
谁能告诉我一下怎么删除其中的一行,最好写下代码,先谢谢了。

解决方案 »

  1.   

       正常是用Label显示的,那我是否能用下面的语句得到两个主键呢:string ab = ((Label)(e.Item.Cells[0].Controls[0])).Text;出错提示说:“指定的参数已超出有效值的范围”。(我那个表绑定完是6列的)
    上面的语句是从根本上错了吗?还是有些小错误?望指点。
      

  2.   


    create table voteDetails
    (
           voteID int foreign key references voteMaster(voteID),
           voteDetailsID int not null,
           voteItem varchar(20) not null,
           voteNum int default 0,
           primary key(voteID,voteDetailsID)
    )你的voteMaster表主键是voteID,voteDetails表主键是voteID,voteDetailsID,你删除的时候,先删除voteDetails表,然后再删除voteMaster表。
    或者,你设置删除的机制为级联删除,也可以:参考这里:
    级联删除(ON DELETE CASCADE的用法)
    http://www.cnblogs.com/291099657/archive/2010/04/02/1703467.html
      

  3.   

    我如果将voteDetails表中对应一个voteID的所有项都删除的话,我用触发器能实现voteMaster中的相应项也被删除。关键是我不会在DAtaGrid中删除voteDetails的一项啊,这想知道这个怎么删除。
      

  4.   

    <asp:gridview id="gridview1" datakeynames = "主键1,主键2" ...取值:
    gridview1.DataKeys[e.Row.RowIndex][0].ToString();
    gridview1.DataKeys[e.Row.RowIndex][1].ToString();
    ...
     
      

  5.   

    我用的是DataGrid,能写个DataGrid类似的方法吗,谢谢了。
      

  6.   

    string sql="delete from voteMaster where voteID="+gridview1.DataKeys[e.Row.RowIndex][0].ToString()+";delete from voteDetails where voteID="+"gridview1.DataKeys[e.Row.RowIndex][0].ToString();voteDetailsID 我觉得不用去管他,试试看行不行。
      

  7.   

    这还是GridView啊,GridView我不会啊,好像功能没DataGrid强,关键是DataGrid很多东西都做好了,我就设定设定就好了。是我想实现的东西在DataGrid不能实现,还是我这问题太菜了?会的告诉一下吧,万分感谢,等着用啊。
    我就是想再删除的时候能获得DataGrid所绑定表的两个主键。最好写下代码啊。