【问题标题】:How to pass checkbox id inside gridview from vb.net to javascript如何将gridview中的复选框ID从vb.net传递给javascript
【发布时间】:2014-04-29 04:01:39
【问题描述】:

我有 gridview,其中我有标题和项目模板上的复选框。现在我想将复选框 id 从 vb 传递给 javascript,如下所示。

  Protected Sub RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim headerchk As New CheckBox
        headerchk = DirectCast(gridview.HeaderRow.FindControl("chkheader"), CheckBox)
        Dim childchk As CheckBox = DirectCast(e.Row.FindControl("chkRow"), CheckBox)
        childchk.Attributes.Add("onclick", "javascript:Selectchildcheckboxes('" + headerchk.ClientID + "')")  'but this line gives me error
    End If
 End Sub

javascript函数是,

function SelectheaderCheckboxes(headerchk) 
{
    if (headerchk.checked) 
    {
       //code
    }
}

我收到“对象引用未设置为对象实例”错误。

【问题讨论】:

  • 你遇到了什么错误??
  • 在运行时,系统将为 chkRow 创建不同的 ID,因为在网格中,系统会将相同的控件复制到行数。所以在运行时 chkRow ID 会有所不同。你想达到什么目标?在选择标题复选框时,应该选中所有复选框吗?还是有什么不同?

标签: javascript asp.net vb.net gridview


【解决方案1】:

它非常简单。改变喜欢

childchk.Attributes.Add("onclick", "javascript:Selectchildcheckboxes(" + headerchk.ClientID + ")")  

因为您已将其作为字符串传递。但您必须将其作为 id 传递。

【讨论】:

    【解决方案2】:

    而不是在服务器端添加属性,而是在设计时添加 onclick 事件,并在您的 javascript 中在顶部添加以下行。

    这些行用于 headerCheckbox,

        var gvcheck = document.getElementById('<%=gridview.clientid %>');
        var chks = gvcheck.rows[0].getElementsByTagName("input");
        header = chks[`index of your checkbox`].id;
    

    设计应该是这样的,

    <asp:TemplateField>
     <ItemTemplate>
        <asp:CheckBox ID="chkRow" onclick="javascript:Selectchildcheckboxes();" runat="server"/>
     </ItemTemplate>
    </asp:TemplateField>
    

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2015-06-07
      • 2016-08-21
      相关资源
      最近更新 更多