我有一个数据网格。它的第一列是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。可能是什么原因?
答案 0 :(得分:0)
首先:“javascript:”是无效的javascript,它是一个协议指令,如果你将一个href属性赋给A标签,这是合适的。
第二:尝试“onclick”而不是“OnClick”
第三:您可以在行模板标签中处理此数据绑定...
<asp:Button ... OnClientClick="PassBack('<%#Eval(...)%>','<%#Eval(...)%>'); return false;" .../>
第四,你应该有一个“回归假”;在您的PassBack调用之后,以防止默认处理程序被触发。