0

我希望以编程方式从GridView.

我已经实现了 gridview 的OnRowDeleting="Delete_Record"事件处理程序,当用户单击 GridView 上的删除链接时调用它,但是由于似乎没有选择行,所以删除的代码不起作用。

要进一步测试,我可以单击选择,选择行(注释掉选择后面的代码),然后如果我单击删除,代码运行良好。

有没有办法让该行被选为第一步Delete_Record

GridViewRow row = gvResults.SelectedRow;
string id = row.Cells[1].Text;

ASB_DataDataContext db = new ASB_DataDataContext();
var delCase = from dc in db.Inputts
              where dc.counter == Convert.ToInt32(id)
              select dc;

foreach (var nCase in delCase)
{
    db.Inputts.DeleteOnSubmit(nCase);
    db.SubmitChanges();
}
4

3 回答 3

2

由于您正在使用该事件,因此您应该将所需的索引作为其中的一部分,GridViewDeleteEventArgs e就像说e.RowIndex

然后你可以访问你需要的参数grid.Rows[e.RowIndex].Cells[1].Text

于 2012-08-23T09:26:26.657 回答
0

您可以通过如下所示的代码来实现

public void GridView1_Delete_Record (Object sender, GridViewDeleteEventArgs e)
{
    string id = gridView1.Rows[e.RowIndex].Cells[2].Text;

    ASB_DataDataContext db = new ASB_DataDataContext();
    var delCase = from dc in db.Inputts
              where dc.counter == Convert.ToInt32(id)
              select dc;

    foreach (var nCase in delCase)
    {
       db.Inputts.DeleteOnSubmit(nCase);
       db.SubmitChanges();
    }  Message.Text = "";
}  
于 2012-08-23T09:34:39.443 回答
0

设置db.Inputts为数据网格的数据源。只需在代码后添加下两行:

datagridView1.DataSource = null;
datagridView1.DataSource = db.Inputts;

将 datasource 设置为 null 是为了从 datagrid 中清除以前的数据;

于 2012-08-23T09:37:30.347 回答