0

ボタンのクリックでGridview行を削除しようとしています。クリックした行のIDを変数に保存したい。そして、ハイパーリンクでこの変数を使用します。

ここに私のRowDataBoundコード

  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())); 

        string id = DataBinder.Eval(e.Row.DataItem, "ProductionOrderId").ToString();
    // somthing like
    // return id ;

    }
}

ここに、選択した行のIDが必要なハイパーリンクがあります

<asp:HyperLink  runat="server" NavigateUrl="~/Producter/Delete?id= id" ID="HyperLink1"> Delete</asp:HyperLink>
4

3 に答える 3

1

GridView レコード ID をクライアント側に保持するように RowDataBound を変更しました。

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())); 

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

        // store the id at the client side
        e.Row.Attributes.Add("id", id);
    }
}

そして、JavaScript コード (jQuery を使用): GridView レコードがクリックされるたびに、ハイパーリンクの href 値が変更されます。

<script type="text/javascript">
  $('#<%=GridView1.ClientID %> tr[id]').click(function () {
      idToDelete = $('#<%=GridView1.ClientID %> tr[id]').val();
      $("a.HyperLink1").attr("href", "~/Producter/Delete?id=" + idToDelete);
  });
</script>

コードをテストしていませんが、必要に応じて動作することを願っています。

編集:次 のように、ヘッドセクションに jQuery.js ファイルの参照も追加する必要があります。

<script src="js/jquery-1.6.1.min.js" type="text/javascript"></script>
于 2013-04-25T14:13:13.693 に答える