关于数据网格中的单元格点击

时间:2009-07-01 04:50:08

标签: javascript asp.net vb.net

我有一个数据网格。它的第一列是ClientType。在单击第一列中的每个单元格(即ClientType)时,该值将显示在名为txtClientType的文本框中。为此,我使用了以下代码。

Private Sub dtGridsearch_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dtGridsearch.ItemDataBound
    Dim lt As ListItemType = e.Item.ItemType
    If lt = ListItemType.Item Or lt = ListItemType.AlternatingItem Then
        Dim currentCell As TableCell = CType(e.Item.Controls(0), TableCell)
        dtGridsearch.Columns(0).InitializeCell(currentCell, 0, ListItemType.Item)
        Dim s As New System.Web.UI.WebControls.Style
        s.CssClass = "Hyp"
        Dim str As String = CType(e.Item.DataItem, DataRowView).Row(1)
        currentCell.ApplyStyle(s)
        currentCell.Attributes.Add("OnClick", "javascript:PassBack('" & CType(e.Item.DataItem, DataRowView).Row(0) & "','" & str.Trim & "');")
    End If
End Sub

在javascript中,我使用以下代码将值绑定到文本框

function PassBack(FieldId,FieldValue)
{
    document.getElementById(txtClientType).value = FieldValue;       
}

以上代码适用于IE。但是在Chrome中,当我单击datagrid中的单元格时,相应的值不会显示在文本框中。我正在使用VS2008。可能是什么原因?

1 个答案:

答案 0 :(得分:0)

首先:“javascript:”是无效的javascript,它是一个协议指令,如果你将一个href属性赋给A标签,这是合适的。

第二:尝试“onclick”而不是“OnClick”

第三:您可以在行模板标签中处理此数据绑定...

<asp:Button ... OnClientClick="PassBack('<%#Eval(...)%>','<%#Eval(...)%>'); return false;" .../>
第四,你应该有一个“回归假”;在您的PassBack调用之后,以防止默认处理程序被触发。