在gridview(而不是datagridview)asp.net中获取单击的单元格索引

当我在gridview(而不是datagridview)中单击单元格时,我想获取单元格索引(不是行索引),而不是行索引。 我使用asp.net – c#

使用RowCreated事件在每个单元格上注册单元格并处理GridView's SelectedIndexChangedEvent

 protected void OnRowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { for (int i = 0; i < e.Row.Cells.Count; i++ ) { TableCell cell = e.Row.Cells[i]; cell.Attributes["onmouseover"] = "this.style.cursor='pointer';this.style.textDecoration='underline';"; cell.Attributes["onmouseout"] = "this.style.textDecoration='none';"; cell.ToolTip = "You can click this cell"; cell.Attributes["onclick"] = string.Format("document.getElementById('{0}').value = {1}; {2}" , SelectedGridCellIndex.ClientID, i , Page.ClientScript.GetPostBackClientHyperlink((GridView)sender, string.Format("Select${0}", e.Row.RowIndex))); } } } protected void SelectedIndexChanged( Object sender, EventArgs e) { var grid = (GridView) sender; GridViewRow selectedRow = grid.SelectedRow; int rowIndex = grid.SelectedIndex; int selectedCellIndex = int.Parse(this.SelectedGridCellIndex.Value); } 

SelectedGridCellIndex是一个隐藏字段,在aspx上以声明方式添加以存储所选索引:

    ..... 

您需要为此页面禁用事件validation,否则ASP.NET会抱怨:

 <%@ Page Language="C#" AutoEventWireup="true" EnableEventValidation="false" CodeBehind="Grid.aspx.cs" Inherits="CSharp_WebApp.Grid" %>