gpt4 book ai didi

Asp.Net 和 Shadowbox

转载 作者:行者123 更新时间:2023-11-28 02:59:36 24 4
gpt4 key购买 nike

尝试从 asp:gridview 数据行中使用 Jquery 弹出 IFrame Shadowbox。我无法在字符串中添加正确的引号:

<asp:ImageButton ID="btnEdit" runat="server"
OnClientClick='<%# "javascript:popAccount(\'"+
Eval("id", "Popup.aspx?id={0}")+"\');" %>' />

解析器错误消息:服务器标记格式不正确。

没有转义的单引号(无法工作,但可以正确解析):

<asp:ImageButton ID="btnEdit" runat="server"
OnClientClick='<%# "javascript:popAccount("+
Eval("id", "Popup.aspx?id={0}")+");" %>' />

客户端 HTML,如预期:

onclick="javascript:popAccount(Popup.aspx?id=3ce3b19c-1899-4e1c-b3ce-55e5c02f1);"

如何在 Javascript 中获取引号?

编辑:添加解决方案。这不是很通用,因为必须知道数据绑定(bind)类型才能访问 id 属性。键(在 GrodView 的 DataKeyNames 参数中定义)似乎没有在事件参数中公开。但它确实有效。

    protected void editGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
// do not look at header or footer
if (e.Row.RowType == DataControlRowType.DataRow)
{
ImageButton btn = e.Row.FindControl("btnPopup") as ImageButton;
if (btn != null)
{
btn.OnClientClick =
"javascript:popAccount('EditAccountPopup.aspx?"+
Constants.acctidParam+"="+
((tb_account)(e.Row.DataItem)).id.ToString()+"');";
}
}

最佳答案

在代码隐藏的 GridView 的 rowdatabound 事件中选择 ImageButton,并从那里添加属性。

但是您确定需要使用服务器控件吗?如果只是一个普通的图像呢?如果您要“替换”ImageButton 的点击行为,那么您似乎根本不需要它。

更新:

对于代码隐藏解决方案,我编写了这个小示例(抱歉,在 VB.NET 中):

  Private Sub gridview1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gridview1.RowDataBound
Select Case e.Row.RowType
Case DataControlRowType.DataRow
Dim btnEdit As ImageButton = CType(e.Row.Cells(0).FindControl("btnEdit"), ImageButton)
Dim strID As String = CType(e.Row.DataItem, Guid).ToString

btnEdit.Attributes.Add("onclick", String.Format("javascript:popAccount('Popup.aspx?id={0}');", strID))
End Select
End Sub

但是,我仍然建议您采用更简单的方法,jQuery 在这里非常出色。不代码隐藏中需要任何代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>

<script src="http://ajax.microsoft.com/ajax/jQuery/jquery-1.3.2.min.js" type="text/javascript"></script>

<script type="text/javascript" language="javascript">
$(document).ready(function() {

$("img.edit").click(function() {
var sID = this.id.replace('btnEdit_', '');
alert(sID); // Add your popup opening logic here...
});
});
</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="gridview2" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<img id="btnEdit_<%#Container.DataItem %>" class="edit" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>

关于Asp.Net 和 Shadowbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1455287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com