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 を使用するテンプレート コードでは、次のようにします。

<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 に答える
0

ID のみを取得する必要がある場合は、次のように取得する必要があります。

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

null オブジェクトe.Row.DataItem["ProductionOrderId"]でメソッドを呼び出すと例外が発生するため、値のテストには注意してください。ToString()

于 2013-04-25T16:53:07.890 に答える