0

我访问了Calling java script from codebehind 和其他一些用户标记为重复的问题。但具体到我的问题,它们都没有帮助。

我有一个已经构建的 CMS,我需要更改使用用户控件构建的模块之一。我不能在此向and标签添加runat="server"属性。formhead

我有一个

 <asp:GridView ID="gdvResxKeyValue" runat="server" Width="100%"AutoGenerateColumns="False">`</asp:GridView>`

<asp:TreeView ID="tvList" ShowLines="True" runat="server" ImageSet="Msdn"  OnSelectedNodeChanged="tvList_SelectedNodeChanged">
                    <SelectedNodeStyle CssClass="sfSelectednode" />
                </asp:TreeView>

gdvResxKeyValue在树视图中选择节点时绑定,即。

protected void tvList_SelectedNodeChanged(object sender, EventArgs e)
{
    gdvResxKeyValue.DataSource = lstResDef;
    gdvResxKeyValue.DataBind();
    this.Page.ClientScript.RegisterStartupScript(this.GetType(),LocalizationGlobalVariable5", string.Format("edition();"), true);
}

在最后一列gdvResxKeyValue我有一个图像

<asp:TemplateField>
       <ItemTemplate>
            <asp:Image ID="imgEditResxValue" CssClass="sfEdit" runat="server" ImageUrl="~/Administrator/Templates/Default/images/imgedit.png" />
       </ItemTemplate>                            
</asp:TemplateField>                                   

我需要一个使用 javascript 的图像点击处理程序,使用 jquery-1.9.1.js 的缩小版本。所以把代码写成..

<script type="text/javascript">


//<![CDATA[
$.Localization = {
    TextAreaID: 0,
    FilePath: "",
    ID: 0,
    GridID: '<%=gdvResxKeyValue.ClientID%>'
};
function edition() {
    $('#'+ $.Localization.GridID).on('click', 'img[class="sfEdit"]', function () {
        var index = $(this).attr("alt");
        $.Localization.ID = index;
        var data = $('#' + $.Localization.GridID + ' textarea[title="' + index + '"]').val();
        $('#txtResxValueEditor').val(data);
        ShowPopUp("editorDiv");
    });
}
</script> 

但它不起作用。

4

2 回答 2

0

而是在单击图像时调用 javascript 方法。在准备好文档时,我编写了以下代码,终于解决了我的问题。

  $(document).on('click', "#" + $.Localization.GridID + ' img.sfEdit', function (e) {
    var index = $(this).attr("alt");
    $.Localization.ID = index;
    var data = $('#' + $.Localization.GridID + ' textarea[title="' + index + '"]').val();
    $('#txtResxValueEditor').val(data);
    ShowPopUp("editorDiv");
    e.preventDefault();
});
于 2013-08-30T06:30:56.377 回答
0

尝试将您的网格放入 div 包装器:

<div id="myDiv">
....<asp:GridView ID="gdvResxKeyValue"....
</div>

和 JavaScript:

$('#myDiv .sfEdit').click(function(){
  alert('called');
});

编辑:刚刚注意到您在每个回发(树视图的更改事件)上调用启动脚本注册。这不是必需的。只需包含您的 JavaScript 文件,例如:

$(document).ready(function(){
  $('#myDiv .sfEdit').click(function(){
      var imgId = $(this).attr('id');
      alert('called ' + imgId);
    });
});

并将 gridview 保存在 div 包装器中,如上所述。

于 2013-08-26T07:21:14.493 回答