如何在asp.net中获取网格视图的选定单元格值?

时间:2014-04-13 19:34:24

标签: asp.net

任何人都可以告诉我如何在网格视图中获取所选行的特定单元格值或单元格索引。 实际上我需要使用asp.net在网格视图中点击的单元格的值。特别是如何知道用户点击的单元格索引或列名(索引)。 请帮帮我。谢谢你。

1 个答案:

答案 0 :(得分:0)

由于我不认为asp.net网格视图中有任何内置功能,我们可以使用一些小的javascript来处理事件,设置一些隐藏的字段,然后单击一个asp提交按钮。

首先,在表单标记

内的aspx页面中添加以下内容
<asp:HiddenField runat="server" ID="ClickedColumnIndex" />
<asp:HiddenField runat="server" ID="ClickedRowIndex" />
<asp:HiddenField runat="server" ID="ClickedValue" />
<asp:Button runat="server" ID="GridViewClickedButton" 
    OnClick="GridViewClickedButton_Click" style="visibility:hidden;" />

然后我们将要添加一个带有一些javascript的脚本标记。 由于我不知道您的gridview的ID,我将使用&#34; mygridview&#34;。只需将其替换为实际ID。

<script type="text/javascript">

 function initializeGridViewClick(){

    // get the gridview table object
    var tbl = document.getElementById('<%=mygridview.ClientID %>');

    //get the table rows (TR) inside of the table body (TBODY)
    var trs = tbl.tBodies[0].getElementsByTagName('tr');

    //loop through each of the rows 
    for (var row = 0; row < trs.length; row++) {

      // get all of the cells in the row
      var tds = trs[row].getElementsByTagName('td');

      //loop through each of the cells
      for (var cell = 0; cell < tds.length; cell++) {

        // set the cell's click function, passing in the row index, cell index, and the HTML in the cell
        tds[cell].onclick = function(){ cellClicked(row, cell, this.innerHTML); };
      }
    }
  }

  function cellClicked(row_idx, col_idx, val){

    //set the values of the hidden fields we added earlier
    document.getElementById('<%=ClickedColumnIndex.ClientID %>').value = row_idx;
    document.getElementById('<%=ClickedRowIndex.ClientID %>').value = col_idx;
    document.getElementById('<%=ClickedValue.ClientID %>').value = val;

    //now perform the click on the submit button we added earlier
    document.getElementById('<%=GridViewClickedButton.ClientID %>').click();

  }

  //now we set it up so the initialization function runs when the form is loaded
  window.onload=function(){initializeGridViewClick();};

</script>

现在,在您的服务器代码中,只需将以下内容添加到Page_Load处理程序中以连接按钮事件并为按钮的单击事件提供处理程序,然后使用列索引行执行您想要的任何步骤指数和价值。

<强> C#

在页面加载方法中,添加以下内容

GridViewClickedButton.Click += new EventHandler(this.GridViewClickedButton_Click);    

现在添加处理点击的方法

void GridViewClickedButton_Click(Object sender, EventArgs e) 
{
  // Now we can call a function with our new values
  MyFunction(ClickedColumnIndex.Value, ClickedRowIndex.Value, ClickedValue.Value);
}

VB

现在添加处理点击的方法

Sub GridViewClickedButton_Click(ByVal sender As Object, ByVal e As EventArgs) 
{
  // Now we can call a function with our new values
  MyFunction(ClickedColumnIndex.Value, ClickedRowIndex.Value, ClickedValue.Value)
}

结果

当用户点击gridview的表格主体中的单元格时,将发生以下情况:

  1. javascript cellClicked函数将设置列索引,行索引和单元格的值,然后单击隐藏的asp:Button
  2. 将发回服务器并触发GridViewClickedButton_Click