在DataGrid的footer Template放一個button(CommandName =Add,CommandArgument=e,id=btnAdd),如何觸發button事件。彈出一個模態窗口。
幫忙看看下面代碼有什麼問題??Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
        If e.CommandName = "Add" Then
            If (Not IsClientScriptBlockRegistered("clientScript")) Then
                Dim strScript As String = "<script>" + vbCrLf
                strScript += "function OpenWin(){" + vbCrLf
                strScript += "var str=window.showModalDialog('AuthorsSelect.aspx',document.getElementById(txtAu_id).value)" + vbCrLf
                strScript += "if(str!=null)  document.getElementById(txtAu_id).value=str" + vbCrLf
                strScript += "}" + vbCrLf
                strScript += "</script>" + vbCrLf
                RegisterClientScriptBlock("clientScript", strScript)
            End If
            Dim buttonAdd As Button
            buttonAdd = e.Item.FindControl("btnAdd")
            buttonAdd.Attributes.Add("onclick", "OpenWin()")
        End If
    End Sub

解决方案 »

  1.   

    你把那段这么长的js直接放到head标签里面不行么
    然后在itemdatabound事件里面写
    buttonAdd = (Button)e.Item.FindControl("btnAdd")
     buttonAdd.Attributes.Add("onclick", "OpenWin()")
      

  2.   

    剛才是在說你樓上的,對了,js直接放到head标签里面和直接用代碼寫有什麼區別,為什麼放事件就不行啊
      

  3.   

    在事件里面是动态加入,你代码的加入js和客户端事件与该js函数绑定是同时在你的单击按钮的后台事件里面写的,这个说明你对于web的运作方式还是不够明白
      

  4.   

    正常的应该是单击按钮 ——》执行前台代码(比如你的js函数)——》执行后台代码
    而你的是    单击按钮 --》执行后台代码 --》加入js代码——》加入客户端绑定你这样的结果很可能是点击第一次没有效果,然后第二次点击却有效果。
      

  5.   

    不能把代碼
    buttonAdd = (Button)e.Item.FindControl("btnAdd")
     buttonAdd.Attributes.Add("onclick", "OpenWin()")
    放在itemdataBind裡面,頁面加載時會出錯:
    錯誤信息:並未將物件參考設定為物件的執行個體 
    描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 例外詳細資訊: System.NullReferenceException: 並未將物件參考設定為物件的執行個體原始程式錯誤: 
    行 212:        Dim buttonAdd As Button
    行 213:        buttonAdd = e.Item.FindControl("btnAdd")
    行 214:        buttonAdd.Attributes.Add("onclick", "OpenWin()")
    行 215:
    行 216:    End Sub而放在itemcommand出現点击第一次没有效果,然后第二次点击才有效果。