首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

先遇到一技术有关问题,求编程大神给个思路或者直接有代码提示就再好不过了?

2013-08-16 
先遇到一技术问题,求编程大神给个思路或者直接有代码提示就再好不过了???!!!!gridview中有一个input控件模

先遇到一技术问题,求编程大神给个思路或者直接有代码提示就再好不过了???!!!!
gridview中有一个input控件模板列,弹出层是用脚本写的,表的

,现在我想实现的是当点击“查看详情”的时候,后台判断checkbox是否被选中,如果选中了,后台将ID记录下来并出现弹出层(层里面的内容想用C#实现),通过id从数据库中提取数据出现在弹出层里。弹出层的代码:
<script type="text/javascript">
        function showid(idname) {
            var isIE = (document.all) ? true : false;
            var isIE6 = isIE && ([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 6);
            var newbox = document.getElementById(idname);
            newbox.style.zIndex = "9999";
            newbox.style.display = "block"
            newbox.style.position = !isIE6 ? "fixed" : "absolute";
            newbox.style.top = newbox.style.left = "50%";
            newbox.style.marginTop = -newbox.offsetHeight / 2 + "px";
            newbox.style.marginLeft = -newbox.offsetWidth / 2 + "px";
            var layer = document.createElement("div");
            layer.id = "layer";
            layer.style.width = layer.style.height = "100%";
            layer.style.position = !isIE6 ? "fixed" : "absolute";
            layer.style.top = layer.style.left = 0;
            layer.style.backgroundColor = "#000";
            layer.style.zIndex = "9998";
            layer.style.opacity = "0.6";
            document.body.appendChild(layer);


            var sel = document.getElementsByTagName("select");
            for (var i = 0; i < sel.length; i++) {
                sel[i].style.visibility = "hidden";
            }
            function layer_iestyle() {
                layer.style.width = Math.max(document.documentElement.scrollWidth, document.documentElement.clientWidth)
+ "px";
                layer.style.height = Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight) +
"px";
            }
            function newbox_iestyle() {
                newbox.style.marginTop = document.documentElement.scrollTop - newbox.offsetHeight / 2 + "px";
                newbox.style.marginLeft = document.documentElement.scrollLeft - newbox.offsetWidth / 2 + "px";
            }
            if (isIE) { layer.style.filter = "alpha(opacity=60)"; }
            if (isIE6) {
                layer_iestyle()
                newbox_iestyle();
                window.attachEvent("onscroll", function () {
                    newbox_iestyle();
                })
                window.attachEvent("onresize", layer_iestyle)
            }
            layer.onclick = function () {


                newbox.style.display = "none"; layer.style.display = "none"; for (var i = 0; i < sel.length; i++) {
                    sel[i].style.visibility = "visible";
                }
            }
        }
</script>

调用这个脚本:
<asp:TemplateField HeaderText="详情">        
                    <ItemTemplate>
                        <input name ="button_test" type ="button" onclick ="showid('smallLay'); " style =" width :65px; height :25px;" value="查看详情" />
                    </ItemTemplate>
                    
                </asp:TemplateField>
,后面的思路比较清楚,就是在checkbox记录id这儿不知道该如何实现,求大侠指教,最好提供下代码并有注释,学习下~~~~~~~~~~~
[解决办法]
首先,你这个东西思路就很有问题
你是后台进行数据交互,这时候不可避免要postback,那你的js层效果直接在刷新后就没了,所以你的onclick ='showid(<%#Eval("id")%>)'是无效的,除非你点击checkbox的时候就把数据填充好,但明显这是不科学的做法。。。

如果你的确要做到这样的效果,那么正确的做法应该是

前台
将你“查看详情”按钮转化成服务器控件,并对此控件添加Click事件,具体你可以拖一个按钮控件,并双击生成click事件后,将这个控件拖到模板列里面

后台
在按钮的click事件里面将sender参数转化为你的button控件,类似下面的代码
Button bt = sender as Button;
if(bt!=null)
{
    GridViewRow row = bt.NamingContainer as GridViewRow;
    CheckBox cb = row.Cells[0].FindControl("checkBox1") as CheckBox;


    if(cb.Checked)//判断是否选中
    {
        //填充层数据
        //注册js脚本,以弹出层
    }
}


这个代码都是手写的,具体可能有错误,反正思路就是这个样子

另外如果可以ajax的还是ajax方便
[解决办法]
你调试一下是不是后台问题,如果后台没问题,用FireBug或者IE F12看是不是js问题


string id=GridView1.DataKeys[GridView1 .SelectedIndex ].Value.ToString();

这个有问题,应该改成row.RowIndex

[解决办法]
弹出蒙版的效果还是用ajaxtoolkit控件吧,你baidu下,很简单的

热点排行