【问题标题】:delete row's selected in Gridview in Asp.net删除在 Asp.net 的 Gridview 中选择的行
【发布时间】:2010-12-02 07:28:13
【问题描述】:

此代码有问题,我不知道那是什么。此代码必须在选中时删除 gridview 行。 我设置 AutoGenerateSelectButton = true 然后编写此代码,该代码不起作用并且来自 foreach 的异常。

protected void IDeletebtn_Click(object sender, EventArgs e)
{

    foreach (GridViewRow Items in InboxGrv.SelectedRow)
    {
        var delete = from del in MDB.Messages
                     where del.Subject == Items.Cells[0].Text.ToString()
                     select del;

        foreach (var Item in delete)
        {
            MDB.Messages.DeleteOnSubmit(Item);
        }

        MDB.SubmitChanges();
    }

}

例外:

foreach 语句无法对“System.Web.UI.WebControls.GridViewRow”类型的变量进行操作,因为“System.Web.UI.WebControls.GridViewRow”不包含“GetEnumerator”C:\Documents and Settings 的公共定义\Tehrani\Desktop\MessageAdminPage\ADMIN\Inbox.aspx.cs 87 9 C:...\MessageAdminPage\

【问题讨论】:

    标签: asp.net linq gridview


    【解决方案1】:

    foreach 中的代码(MDB.Messages.DeleteOnSubmit(Item);) 修改了您正在迭代的集合。改用 for 循环,倒计时:

    int deleteCount = delete.Count();
    var deleteList = delete.ToList();
    for(int i = deleteCount - 1; i > 0; i--)
    {
      MDB.Messages.DeleteOnSubmit(deleteList[i]);
    }
    

    【讨论】:

    • 代码中的此异常:索引超出范围。必须是非负数且小于集合的大小。参数名称:索引
    【解决方案2】:

    抛出异常是因为您正在迭代一个不是集合的对象。 InboxGrv.SelectedRow 是选定的 GridViewRow 对象。

    因为,现在您已经有了 GridViewRow 对象,您可以从 Row 中找到 Id (PK) 以删除数据库中的记录。

    【讨论】:

      【解决方案3】:

      尝试更改您的 linq 查询:

      string subject = Items.Cells[0].Text.ToString()
      var delete = from del in MDB.Messages
                           where del.Subject == subject
                           select del;
      

      Linq2X 尝试将此表达式树转换为 SQL 语句。但它现在不知道如何处理 Items.Cells 集合。如果将字符串保存在局部变量中,那么 Linq 会看到一个常量。

      编辑:啊!我非常专注于我看到的 Linq 语句,以至于 GridView 不支持多个选定项。

      protected void IDeletebtn_Click(object sender, EventArgs e) 
      {
      
          foreach (GridViewRow Items in InboxGrv.SelectedRow)
          {
      

      SelectedRow 是一个对象,而不是枚举。

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 2014-02-28
        • 1970-01-01
        • 2012-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-11
        • 1970-01-01
        相关资源
        最近更新 更多