.net gridview里面点击行任意位置弹出fancybox,并传递参数

-Tracy-McGrady- 2015-08-04 03:24:17
如题,我想实现a.aspxz中的gridview里面点击行任意位置通过弹出fancybox的方式显示b.aspx,并将a.aspx中gridview里面的参数传递到b.aspx中,请问除了<a>标签,点击固定区域以外,能点击这一行任意位置实现效果吗??跪谢
...全文
353 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wx8849 2015-08-05
  • 打赏
  • 举报
回复

<section class="featured">
        <div>
            <asp:GridView ID="Grid1" runat="server" OnSelectedIndexChanged="Grid1_SelectedIndexChanged" DataKeyNames="ID" AutoGenerateColumns="False" OnRowDataBound="Grid1_RowDataBound">
                <Columns>
                    <asp:TemplateField ControlStyle-CssClass="desc">
                        <ItemTemplate>
                            <a><%# Eval("ID") %></a>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <a><%# Eval("Name") %></a>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
    </section>
    <script>
        function thisID(id) {
            alert(id);
        }
</script>
 protected void Grid1_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow GridR = Grid1.SelectedRow;
            string S = Grid1.DataKeys[GridR.DataItemIndex].Value.ToString();
            Page.ClientScript.RegisterStartupScript(this.GetType(), "tk", "thisID(" + S + ")", true);
        }

        protected void Grid1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            e.Row.Attributes["style"] = "cursor:hand";
            PostBackOptions myPostBackOptions = new PostBackOptions(this);
            myPostBackOptions.AutoPostBack = false;
            myPostBackOptions.PerformValidation = false;
            myPostBackOptions.RequiresJavaScriptProtocol = true; //加入javascript:头
            String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as GridView, "Select$" + e.Row.RowIndex.ToString());
            e.Row.Attributes.Add("onclick", evt);
        }
页头page 里面加上EnableEventValidation="false"
-Tracy-McGrady- 2015-08-05
  • 打赏
  • 举报
回复
引用 15 楼 ajianchina 的回复:
刚刚没事看了一下Fancybox,呵呵,没想到是这么一个东西,趁有时间已经给你弄好了。 上码了,全套
我发现我代码弹不出来的原因了。我的dm是varchar型的。把代码改成这样就完美了,管他int型还是varchar型

e.Row.Attributes.Add("onclick", "showFancyBox('" + ((GridView)sender).DataKeys[e.Row.RowIndex].Value.ToString() + "');");
加个引号
ajianchina 2015-08-04
  • 打赏
  • 举报
回复
刚刚没事看了一下Fancybox,呵呵,没想到是这么一个东西,趁有时间已经给你弄好了。 上码了,全套

<script type="text/javascript">
$(document).ready(function(){
	$("#openUrl").fancybox({
			'width':'75%',
			'height':'75%',
			'autoScale':false,
			'transitionIn':'none',
			'transitionOut':'none',
			'type':'iframe'
		});
});
	
function showFancyBox(id) 
{
	$("#openUrl").attr("href","b.aspx?id="+id); 
	$("#openUrl").click();
}
</script>

这个隐藏的a标签,你放在body,随便什么地方,反正看不到。
<a id="openUrl" href="#" style="display:none;"></a>
后台cs

protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    //首先判断是否是数据行
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //鼠标移动到某行上,该行变色
        e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#CCCCFC'");
        //鼠标移开后,恢复
        e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");
         
        //就这儿了       
        e.Row.Attributes.Add("onclick", "showFancyBox("+((GridView)sender).DataKeys[e.Row.RowIndex].Value.ToString()+")");
    }
}
fudapeng7 2015-08-04
  • 打赏
  • 举报
回复
注册双击事件,然后获得选中行的RowID,事件中弹出b.aspx。b.asp 页面控件根据rowID去取数据填充
ajianchina 2015-08-04
  • 打赏
  • 举报
回复
引用 12 楼 yangsh0722 的回复:
[quote=引用 9 楼 ajianchina 的回复:] 弹不出就是is的问题咯
哥,帮我看看哪里出错了[/quote] 你先在页面中随意找个地方放一个a标签 譬如<a href="javascript:showFancyBox(1);" >123456</a> 然后看弹出层是否能正常显示出来,关键就是js代码,这个搞好了,就没问题了。
-Tracy-McGrady- 2015-08-04
  • 打赏
  • 举报
回复
引用 9 楼 ajianchina 的回复:
弹不出就是is的问题咯
哥,帮我看看哪里出错了
-Tracy-McGrady- 2015-08-04
  • 打赏
  • 举报
回复
引用 7 楼 sy401042879 的回复:
[quote=引用 楼主 yangsh0722 的回复:]请问除了<a>标签,点击固定区域以外,能点击这一行任意位置实现效果吗??跪谢
代码就不具体写了,说下思路. 1:用样式写个隐藏的a标签。 2:模拟点击a标签。就是当点击tr时,就click链接。但在此处之前,应把你的连接和参数值赋给a标签。 3:还是$("a").fancybox即可。主要是上面两步提前弄好。[/quote] 第二步怎么搞?
-Tracy-McGrady- 2015-08-04
  • 打赏
  • 举报
回复
引用 3 楼 diaodiaop 的回复:
上面写错了...

<asp:GridView runat="server" ID="g1" Width="100%" AutoGenerateColumns="false"  EnableViewState="false">
    <Columns>
            <asp:TemplateField  ItemStyle-CssClass="ooxx">
                <HeaderTemplate>查看</HeaderTemplate>
                <ItemTemplate>
                     <a class='xxoo' href='xxxx.aspx?id=<%#Eval("id")%>'  xid='<%#Eval("id")%>'>查看</a>
                 </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

<script type="text/javascript">
        $(document).ready(function () {
            $(".ooxx").click(function () {
                var id = $(this).find("a").attr("xid");
                alert(id);//得到ID之后 弹窗....
            });
        });
    </script>
不得行

$(document).ready(function () {
    $(".fb").click(function () {
        var id = $(this).find("a").attr("xid");
        //alert(id); //得到ID之后 弹窗....
        $.fancybox.open({
            'width': 600,
            'height': 380,
            'autoScale': false,
            'transitionIn': 'none',
            'transitionOut': 'none',
            'type': 'iframe'
            /*'href': 'yhqktx.aspx',
            'onClosed': function() { 
            window.location.href='yhqdsc.aspx';
            }*/
        });
    });
});

<Columns>
                <asp:TemplateField ItemStyle-CssClass="fb">
                    <HeaderTemplate>选择</HeaderTemplate>
                    <ItemTemplate> 
                       <a class="fb" href="yhqktx.aspx?id=<%# Eval("dm")%>" xid='<%# Eval("dm")%>' >养护</a>
                    </ItemTemplate> 
                </asp:TemplateField>
“/zl_yhxt”应用程序中的服务器错误。 无法找到资源。 说明: HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。 请求的 URL: /zl_yhxt/undefined
ajianchina 2015-08-04
  • 打赏
  • 举报
回复
引用 8 楼 yangsh0722 的回复:
[quote=引用 5 楼 ajianchina 的回复:] 又发帖了,刚刚的帖子给你的方法没试吗?那么简单的方法,点击行任何位置就是你要的效果。

    <script type="text/javascript">
        function showFancyBox(iid) {
            $(".test").fancybox({
                'width': 600,
                'height': 380,
                'autoScale': false,
                'transitionIn': 'none',
                'transitionOut': 'none',
                'type': 'iframe',
                'href': 'yhqktx.aspx?id=' + iid,
                'onClosed': function () {
                    window.location.href = 'yhqdsc.aspx';
                }
            });
        }
    </script>

    protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.CssClass = "test";
            e.Row.Attributes.Add("onclick", "showFancyBox(" + ((GridView)sender).DataKeys[e.Row.RowIndex].Value.ToString() + ")");
        }
    }
datakeynames也设置了,貌似弹不出来,不知道为什么[/quote] 弹不出就是is的问题咯
-Tracy-McGrady- 2015-08-04
  • 打赏
  • 举报
回复
引用 5 楼 ajianchina 的回复:
又发帖了,刚刚的帖子给你的方法没试吗?那么简单的方法,点击行任何位置就是你要的效果。

    <script type="text/javascript">
        function showFancyBox(iid) {
            $(".test").fancybox({
                'width': 600,
                'height': 380,
                'autoScale': false,
                'transitionIn': 'none',
                'transitionOut': 'none',
                'type': 'iframe',
                'href': 'yhqktx.aspx?id=' + iid,
                'onClosed': function () {
                    window.location.href = 'yhqdsc.aspx';
                }
            });
        }
    </script>

    protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.CssClass = "test";
            e.Row.Attributes.Add("onclick", "showFancyBox(" + ((GridView)sender).DataKeys[e.Row.RowIndex].Value.ToString() + ")");
        }
    }
datakeynames也设置了,貌似弹不出来,不知道为什么
sy401042879 2015-08-04
  • 打赏
  • 举报
回复
引用 楼主 yangsh0722 的回复:
请问除了<a>标签,点击固定区域以外,能点击这一行任意位置实现效果吗??跪谢
代码就不具体写了,说下思路. 1:用样式写个隐藏的a标签。 2:模拟点击a标签。就是当点击tr时,就click链接。但在此处之前,应把你的连接和参数值赋给a标签。 3:还是$("a").fancybox即可。主要是上面两步提前弄好。
  • 打赏
  • 举报
回复
$('#GridView1 tr').click(function () {
    var $fb = $(this).find('a.fb');
    if ($fb.length > 0) {
        $.fancybox.open({
            href: 'b.aspx?id=' + $fb.attr('dm'),
            type: 'iframe',
            padding: 5
        });
    }
});
<a class="fb" dm='<%#Eval(id"")%>'>详细信息</a>
ajianchina 2015-08-04
  • 打赏
  • 举报
回复
又发帖了,刚刚的帖子给你的方法没试吗?那么简单的方法,点击行任何位置就是你要的效果。
-Tracy-McGrady- 2015-08-04
  • 打赏
  • 举报
回复
引用 1 楼 diaodiaop 的回复:

<Columns>
<asp:TemplateField ItemStyle-CssClass="xxoo" href='b.aspx?id=<%#Eval("id")%>'>
<HeaderTemplate></HeaderTemplate>
<ItemTemplate>
<a class="xxoo" href='b.aspx?id=<%#Eval("id")%>'>详细信息</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>



$(".xxoo").fancybox({
'width':'75%',
'height':'75%',
'autoScale':false,
'transitionIn':'none',
'transitionOut':'none',
'type':'iframe'
});


不得行
by_封爱 2015-08-04
  • 打赏
  • 举报
回复
上面写错了...

<asp:GridView runat="server" ID="g1" Width="100%" AutoGenerateColumns="false"  EnableViewState="false">
    <Columns>
            <asp:TemplateField  ItemStyle-CssClass="ooxx">
                <HeaderTemplate>查看</HeaderTemplate>
                <ItemTemplate>
                     <a class='xxoo' href='xxxx.aspx?id=<%#Eval("id")%>'  xid='<%#Eval("id")%>'>查看</a>
                 </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

<script type="text/javascript">
        $(document).ready(function () {
            $(".ooxx").click(function () {
                var id = $(this).find("a").attr("xid");
                alert(id);//得到ID之后 弹窗....
            });
        });
    </script>
wx8849 2015-08-04
  • 打赏
  • 举报
回复

  protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)    {        GridViewRow GridR = GridView1.SelectedRow;        string S = GridR.Cells[2].Text.ToString();        Response.Redirect("b.aspx?EmployeeID=" +S);    }
by_封爱 2015-08-04
  • 打赏
  • 举报
回复

<Columns>
            <asp:TemplateField ItemStyle-CssClass="xxoo" href='b.aspx?id=<%#Eval("id")%>'>
                <HeaderTemplate></HeaderTemplate>
                <ItemTemplate>
                           <a class="xxoo" href='b.aspx?id=<%#Eval("id")%>'>详细信息</a>
                </ItemTemplate>
            </asp:TemplateField>
</Columns>


$(".xxoo").fancybox({
'width':'75%',
'height':'75%',
'autoScale':false,
'transitionIn':'none',
'transitionOut':'none',
'type':'iframe'
});

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧