0

我找不到任何解决我的问题的方法。这是我正在做的一个 MVC 项目。

在 GridView 我该怎么做:Click on row and then click on button to delete this selected or clicked row.

不需要任何带有自动选择按钮的解决方案。

所以

  1. 鼠标点击行

  2. 获取其 ID 或任何值

  3. 重定向到我的函数 + Id 的按钮。

用gridview不可能吗?如果我使用表格会更好吗?

这是我尝试过的:

//To get the id 
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.RowIndex.ToString();
        string id = DataBinder.Eval(e.Row.DataItem, "Id").ToString();
       e.Row.Attributes.Add("rowid", id);
    }

}

我的 javascript 一个按钮

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

<script  type ="text/javascript" language="javascript">
    //every time a row is clicked this script will perform the following actions:
    $("tr").click(function () {
        var clicked = $(this);
        //get the row id from the currently cliked row
        var rowid = clicked.attr("rowid");
        //get the value of href attribute from the link with id 'HyperLink1'
        var link = $("#HyperLink1").attr("href");
        //remove any previously appended values
        var linkTokens = link.split("=");
        linkTokens[1] = "";
        link = linkTokens.join("=");
        //append the current row id to the link
        link = link + rowid;
        //set the href attribute of your link to the new value
        $("#HyperLink1").attr("href", link);
    });
</script>

一直得到 id = undefined 。

4

1 回答 1

0

如果您使用的是 MVC,我认为您对 GridView 的使用完全错误,正如我从您后面的代码中看到的那样。这是一个与 MVC 不兼容的服务器控件,因为它依赖于 PostBack 和 ViewState。你可以很容易地以“面向 MVC 的方式”做到这一点:

假设您要显示来自名为“产品”的操作方法的产品列表。

  1. 右键单击该控制器操作并添加新视图。
  2. 弹出一个模态对话框。
  3. 将该视图命名为“产品”。
  4. 从列表中选择它将强烈绑定到的类型,因此选择“产品”类。
  5. 选择视图类型为“列表”。
  6. 选择布局页面(如 ASP.NET 中的 MasterPage)。
  7. 而已。

现在,在控制器操作中,您应该调用该视图并将其传递给产品集合,如下所示:

public ActionResult Products()
{
  List<Products> products = SomeMethodToGetProducts();

  return View(products);
}

简单的!

您现在要做的就是在生成的视图中填充操作,例如“编辑”、“删除”等。

于 2013-05-11T11:34:03.697 回答