何必要这样呢,直接在datagrid CurrentCellChanged事件中,根据不同ROW 和COL ,调用不同的方法不就行了

解决方案 »

  1.   

    你這個單純用服務器代碼實現比較難,可以結合客戶端javascript腳本實現.
    javascript代碼:
    function cell_click(cell){
         document.location="webform2.aspx?row="+parentElement.rowIndex+"&col="+cell.cellIndex;
    //webform2.aspx換成你需要重新導向的頁面URL
    }
    服務器端代碼:
     Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated
            Dim i As Int16
            For i = 0 To e.Item.Cells.Count - 1
                e.Item.Cells(i).Attributes.Add("onclick", "cell_click(this);")
            Next
    End Sub
    注意客戶端取得的行和列的索引值与服務器端略有不同,具体的可以試驗一下.
      

  2.   

    to  beesman:我怎么找不到datagrid 中的CurrentCellChanged事件
      

  3.   

    而且  这个不是cell changed 而是点击cell , cell的内容并没有变
      

  4.   

    Dim i As Int16
            For i = 0 To e.Item.Cells.Count - 1
                e.Item.Cells(i).Attributes.Add("onclick", "alert('OK')")        Next
    式式
      

  5.   

    现在成功的实现方法是  
     Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
            If e.Item.ItemIndex > 1 Then
                Dim i As Int16
                Dim myGrid As DataGrid = CType(sender, DataGrid)            For i = 1 To e.Item.Cells.Count - 1                e.Item.Cells.Item(i).Attributes.Add("onclick", "document.location.href='week.aspx?week=" & (e.Item.ItemIndex - 1).ToString & "&colum=" & i.ToString & "&item=" & myGrid.Items.Item(0).Cells(i).Text.Trim & "'")
                    '  e.Item.Cells.Item(i).Attributes.Add("onclick", "dataItem_Click()")
                Next
            End If
        End Sub想试试更好的方法,不用重连到这页,有没有可以自定义事件之类的办法
      

  6.   

    第一步:声明两个hidden,一个x一个Y
    <INPUT id="hiddenY"type="hidden" name="Hidden1" runat="server">
    <INPUT type="hidden" runat="server" id="hiddenX" NAME="hiddenX">
    第二步:加入脚本。
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    for (int i=0;i<e.Item.Cells.Count;i++)

    {
     TableCell tc = e.Item.Cells [i];
    tc.Attributes.Add("onclick","document.all.hiddenX.value= this.parentElement.rowIndex;document.all.hiddenY.value= this.cellIndex;"+this.GetPostBackClientEvent (this,""));
    }
    }第三步:在page_load事件里。。
    private void Page_Load(object sender, System.EventArgs e)
     
    if (hiddenX.Value!="" && hiddenX.Value!="undefined")
    {

    Response.Write(hiddenY.Value );
    Response.Write(hiddenX.Value );
    hiddenY.Value="";
    hiddenX.Value="";
    }
      

  7.   

    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
    e.Item.Cells[j].Attributes.Add("onclick", "javascript:__doPostBack(DataGrid1$_ctl" + Convert.ToInt32((e.Item.ItemIndex + 2)) + "$_ctl0','')");
    } }