JanardhanSharma Ответов: 2

Как вставить значение ячейки onclick gridview в hiddenfield


Как вставить значение ячейки Onclick Gridview в Hiddenfield

Здесь я хочу получить значение ячейки GridView ColumnIndex[1] независимо от строки. Строка может быть любой строкой

Что я уже пробовал:

function fnGethdnVal(hdnCC) {
               document.getElementById("hdnCC").value = hdnCC;                
           }

<input id="hdnCC" type="hidden" runat="server"/> 

protected void TranGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType == DataControlRowType.DataRow)
  {
    e.Row.Attributes.Add("onclick", "return fnGethdnVal("  +e.Row.Cells[1].Text+ ")");           

  }
}

Karthik_Mahalingam

после разметки

2 Ответов

Рейтинг:
9

Vincent Maverick Durano

Вот вам пример. Я добавил функцию подсветки строк, чтобы вы могли легко отличить, в какой строке вы находитесь. Он также сохранит выбор между обратными отправками:

Aspx-файл:

<head runat="server">
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">
    var prevRowIndex;
    function HighlighRowAndGetValue(row, rowIndex, cellValue) {
        var parent = document.getElementById(row);
        var currentRowIndex = parseInt(rowIndex) + 1;

        if (prevRowIndex == currentRowIndex) 
            return;
        else if (prevRowIndex != null) 
            parent.rows[prevRowIndex].style.backgroundColor = "#FFFFFF";
        
        parent.rows[currentRowIndex].style.backgroundColor = "#FFFFD6";
        prevRowIndex = currentRowIndex;

        $('#<%= Label1.ClientID %>').text(cellValue);

        $('#<%= hfParentContainer.ClientID %>').val(row);
        $('#<%= hfCurrentRowIndex.ClientID %>').val(rowIndex);
        $('#<%= hfCC.ClientID %>').val(cellValue);
    }

    $(function () {
        RetainSelectedRow();
    });

    function RetainSelectedRow() {
        var parent = $('#<%= hfParentContainer.ClientID %>').val();
        var currentIndex = $('#<%= hfCurrentRowIndex.ClientID %>').val();
        var cellValue = $('#<%= hfCC.ClientID %>').val();
        if (parent != null) {
            HighlighRowAndGetValue(parent,currentIndex,cellValue);
        }
    } 
      
   </script>
</head>
<body>
    <form id="form1" runat="server">
        <h2>You have selected Row: (<asp:Label ID="Label1" runat="server" />)</h2>
        <asp:HiddenField ID="hfCurrentRowIndex" runat="server"></asp:HiddenField>
        <asp:HiddenField ID="hfParentContainer" runat="server"></asp:HiddenField>
        <asp:HiddenField ID="hfCC" runat="server"></asp:HiddenField>
        <asp:GridView ID="GridView1" runat="server" 

            onrowdatabound="GridView1_RowDataBound">
        </asp:GridView>
    </form>
</body>
</html>


С ФОНОВЫМ КОДОМ:
using System;
using System.Data;
using System.Web.UI.WebControls;

namespace WebFormDemo
{
    public partial class GridView : System.Web.UI.Page
    {      
        protected void Page_Load(object sender, EventArgs e) {
            if (!IsPostBack) {
                GridView1.DataSource = CreateDataSource();
                GridView1.DataBind();
            }
        }

        public DataTable CreateDataSource() {
            DataTable dt = new DataTable();
            DataRow dr;

            dt.Columns.Add(new DataColumn("ID", typeof(string)));
            dt.Columns.Add(new DataColumn("Name", typeof(string)));
            dt.Columns.Add(new DataColumn("Lastname", typeof(string)));

            for (int i = 0; i < 20; i++) {
                dr = dt.NewRow();

                dr[0] = i;
                dr[1] = "Name" + i.ToString();
                dr[2] = "Last Name" + i.ToString();

                dt.Rows.Add(dr);
            }

            return dt;
        }

        protected void GridView1_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e) {
            if (e.Row.RowType == DataControlRowType.DataRow) {
                e.Row.Attributes.Add("onclick", string.Format("HighlighRowAndGetValue('{0}','{1}','{2}');", e.Row.ClientID, e.Row.RowIndex, e.Row.Cells[1].Text));
            }
        
        }
    }
}


То cellValue Параметр-Значение из второго столбца таблицы.


Рейтинг:
18

Karthik_Mahalingam

попробовать это

e.Row.Attributes.Add("onclick", "fnGethdnVal('" + e.Row.Cells[1].Text + "')");

function fnGethdnVal(hdnCC) {
             alert(hdnCC);
               document.getElementById('<%# hdnCC.ClientID%>').value = hdnCC;                
           }



Пример:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script>
        function fnGethdnVal(hdnCC) {
             alert(hdnCC);
               document.getElementById('<%= hdnCC.ClientID%>').value = hdnCC;                
           }
    </script>
</head>
<body>
    <form id="form1" runat="server">
  
        <asp:GridView runat="server" ID="TranGrid" OnRowDataBound="TranGrid_RowDataBound" AutoGenerateColumns="true" >
        </asp:GridView> 
        <asp:HiddenField ID="hdnCC" runat="server" />
        
    </form>
</body>
</html>



public partial class WebForm2 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack) return;
            DataTable dt = new DataTable();
            dt.Columns.Add("Brand");
            dt.Columns.Add("Model");
            dt.Columns.Add("ID");
            dt.Rows.Add("Moto", "Nexus",1);
            dt.Rows.Add("Apple", "Iphone",2);
            dt.Rows.Add("Sony", "Vaio",3);
            dt.Rows.Add("Samsung", "Edge",4);
            TranGrid.DataSource = dt;
            TranGrid.DataBind();
           

        }

        protected void TranGrid_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes.Add("onclick", "fnGethdnVal('" + e.Row.Cells[1].Text + "')");

            }
        }

        
    }