0

我正在尝试选择一个 GridView 行,并将其 id 保存到一个变量中,然后在超链接中使用这个 id 来删除该行。

问题是 id=9 一直,即使没有点击任何行。

这是代码:

 string id;

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
     if (e.Row.RowType == DataControlRowType.DataRow)
     {
         e.Row.Attributes.Add(
             "onmouseover",
             "this.style.cursor='Pointer';this.style.backgroundColor='Yellow'");
         e.Row.RowIndex.ToString())); 

         id = DataBinder.Eval(e.Row.DataItem, "ProductionOrderId").ToString();
     }
  }

这是超链接代码

<a href='<%=ResolveUrl("~/Producter/Delete?id=" + id) %>' ID="HyperLink1">Delete</a>

这是删除功能应该是

namespace MvcApplication3.Controllers
{
public class TEstController : Controller
{
    //
    // GET: /TEst/

    public ActionResult Index()
    {
        var db = new DataClasses1DataContext();
        var list = from d in db.Orders
                   select d;
        ViewData["list"] = list;
        return View();
    }

    public ActionResult Delete(Object id)
    { 

    // TODO
        // Delete thr user which its id = obj.id ; 

        return View();
    }

}

}

4

2 回答 2

0

如果您只需要获取 id,您应该像这样获取它:

id = e.Row.DataItem["ProductionOrderId"].ToString();

小心测试e.Row.DataItem["ProductionOrderId"]值,因为在空对象上调用ToString()方法会引发异常。

于 2013-04-25T16:53:07.890 回答
0

好的,试试这个,摆脱事件,你不需要做任何特别的事情,因为在这种情况下你想要的只是访问 ID 值。

在您使用 ID 的模板代码中:

<a href='<%=ResolveUrl("~/Producter/Delete?id=" + id) %>' ID="HyperLink1">Delete</a>

改为这样做:

<a href='<%=ResolveUrl("~/Producter/Delete?id=" + Eval("ProductionOrderId")) %>'>Delete</a>
于 2013-04-25T16:37:05.440 回答