各行の Gridview 内に表示される Javascript 関数への呼び出しを実装しようとしています。このコードは、クリックできるボタンを生成し、Image Editor インスタンス (Aviary by Adobe) を起動します。
一意の変数名がないため、毎回同じ画像が表示されます。スタンドアロン ページでこれを実行し、各画像の Javascript 変数名を変更しようとすると、コードが機能するため、何をすべきかわかりません。一意の変数参照を作成する方法がわかりません。
単一引用符をエスケープできないため、document.getElementByID パーツをインラインで関数のパラメーターとして含めることはできません。
3つのJavaScript変数は
editImageControl editImageURL editImageFilename
<asp:TemplateField HeaderText="Edit Photo">
<ItemTemplate>
<asp:Image ID="editImage" runat="server" ImageUrl='<%# "http://images.foo.com/" & Eval("filename") %>' CssClass="noDisplay" />
<script>
var editImageControl = document.getElementById('<%# DirectCast(Container, GridViewRow).FindControl("editImage").ClientID%>');
var editImageURL = document.getElementById('<%# DirectCast(Container, GridViewRow).FindControl("editImage").ClientID%>').src;
var editImageFilename = '<%# Eval("filename") %>';
</script>
<!-- Add an edit button, passing the HTML id of the image and the public URL of the image -->
<p><input type='image' runat="server" src='http://images.aviary.com/images/edit-photo.png' value='Edit photo' onclick="return launchEditor(editImageControl, editImageURL, editImageFilename);" /></p>
</ItemTemplate>
</asp:TemplateField>