【问题标题】:Regarding cell click in datagrid关于数据网格中的单元格单击
【发布时间】:2009-07-01 04:50:08
【问题描述】:

我有一个数据网格。它的第一列是 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。可能是什么原因?

【问题讨论】:

    标签: javascript asp.net vb.net


    【解决方案1】:

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

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

    第三:你可能可以在你的行模板标签中处理这个数据绑定...

    <asp:Button ... OnClientClick="PassBack('<%#Eval(...)%>','<%#Eval(...)%>'); return false;" .../>
    

    第四个你应该有一个“return false;”在您的 PassBack 调用之后,以防止触发默认处理程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2019-12-31
      • 1970-01-01
      相关资源
      最近更新 更多