前台JS函数
        function setExpand(sender) {
}后台方法如下
for(int i=0;i<10;i++){
  HtmlImage img = new HtmlImage();
                    img.Src = @"minimize.gif";
                    img.Attributes.Add("onclick", "setExpand(this)");
                    img.Style.Add("cursor", "pointer");
}这是后台new的一个图片按钮 个数不确定 id不确定
我如何才能在new完后就调用控件的单击事件

解决方案 »

  1.   

    这是要做什么,你不能把单击事件要做的放在后台么,这样你new完直接调后台的方法呗
      

  2.   

    就是要做一个树形结构的girdview控件
    JS方法如下    <script type="text/javascript">
            //树节点相关控制
            //<!--
            function hideChildren(node) {
                var level = parseInt(node.getAttribute("level"));
                var nextNode = node.nextSibling;
                while (nextNode != null && parseInt(nextNode.getAttribute("level")) > level) {
                    nextNode.style.display = "none"; nextNode = nextNode.nextSibling;
                }
            }
            function showChildren(node) {
                var level = parseInt(node.getAttribute("level"));
                var id = node.getAttribute("id");
                var nextNode = node.nextSibling;
                while (nextNode != null && parseInt(nextNode.getAttribute("level")) > level) {
                    if (nextNode.getAttribute("pid") == id) {
                        if (node.getAttribute("expand") == "1") {
                            nextNode.style.display = "";
                            showChildren(nextNode);
                        }
                        else {
                            nextNode.style.display = "none";
                        }
                    }
                    nextNode = nextNode.nextSibling;
                }
            }
            function setExpand(sender) {
                var curNode = sender.parentNode.parentNode;
                if (curNode.getAttribute("expand") == "1") {
                    curNode.setAttribute("expand", "0");
                    sender.src = "maximize.gif";
                    hideChildren(curNode);
                }
                else {
                    curNode.setAttribute("expand", "1");
                    sender.src = "minimize.gif";
                    showChildren(curNode);
                }
            }
            //-->
        </script>
    后台方法如下        protected void gvList_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    # region 生成树形结构
                    string id = gvList.DataKeys[e.Row.RowIndex]["ID"].ToString();
                    string pid = gvList.DataKeys[e.Row.RowIndex]["SuperDeptID"].ToString();
                    string level = gvList.DataKeys[e.Row.RowIndex]["Level"].ToString();
                    //增加节点的属性
                    e.Row.Attributes.Add("id", id);
                    e.Row.Attributes.Add("pid", pid);
                    e.Row.Attributes.Add("level", level);
                    e.Row.Attributes.Add("expand", "1");
                    int indent = (int.Parse(level) - 1) * 20;
                    
                    //判断是否有子节点
                    string st = gvList.DataKeys[e.Row.RowIndex]["HasChild"].ToString();
                    if (st[0] == '1')
                    {
                        //设置父节点前面的图片和点击事件
                        HtmlImage img = new HtmlImage();
                        img.Src = @"minimize.gif";
                        img.Attributes.Add("onclick", "setExpand(this)");
                        img.Style.Add("cursor", "pointer");
                        img.ID = "img" + e.Row.RowIndex.ToString();
                        e.Row.Cells[0].Controls.Add(img);
                        e.Row.Cells[0].Style["font-weight"] = "bold";
                        img.Attributes[1];
                        
                        //Response.Write(string.Format("<script type=\"text/javascript\">setExpand({0});</script>",img));
                                        }
                    else
                    {
                        indent += 16;
                    }
                    e.Row.Cells[0].Style["padding-left"] = indent + "px";
                    e.Row.Cells[0].Controls.Add(new LiteralControl(e.Row.Cells[0].Text));
                    # endregion
                    e.Row.Attributes["onmouseover"] = "style.backgroundColor='#F2FDDB'";
                    e.Row.Attributes["onmouseout"] = "style.backgroundColor=''";
                }
            }
    这样做的话呈现的控件就是打开的 我现在需要一开始树形结构就是收缩的 这样便于观看
      

  3.   

    直接用js或jquery插件不就好了,干嘛非得自己写?锻炼自己么
      

  4.   

    我现在的电脑上没有vs,没法测试,所以找了个希望有帮助
    http://www.cnblogs.com/lindaWei/archive/2012/04/05/2433385.html