我正在尝试选择一个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();
}
}
}
答案 0 :(得分:0)
好的,试试这个,摆脱这个事件,你不需要做任何特别的事情,因为在这种情况下你只想要它来访问ID值。
在模板代码中,您使用ID:
<a href='<%=ResolveUrl("~/Producter/Delete?id=" + id) %>' ID="HyperLink1">Delete</a>
请改为:
<a href='<%=ResolveUrl("~/Producter/Delete?id=" + Eval("ProductionOrderId")) %>'>Delete</a>
答案 1 :(得分:0)
如果您的需要只是为了获得ID,您应该这样:
id = e.Row.DataItem["ProductionOrderId"].ToString();
请注意测试e.Row.DataItem["ProductionOrderId"]
值,因为对空对象调用ToString()
方法会引发异常。