如何在PageLoad

时间:2015-09-25 12:54:13

标签: c# asp.net events pageload

我在c#中遇到了事件监听器的问题。 我要做的是存储在

 Session["ClickModule"]

当我点击按钮时的变量。

这个变量允许我保持“选中”我的按钮(带有javascript功能的图形选择)。

我需要这个解决方案,因为当用户点击按钮时会重新加载页面,我需要加载正确的设置,比如正确的按钮布局。

因此,当用户单击按钮时,在回发之前我必须将值存储在Session [“ClickModule”]中以在page_load函数中检索它。

Page_Load代码:

  if (!IsPostBack)//only for the first load
                    {
                    HtmlGenericControl li = new HtmlGenericControl("li");
                    li.Attributes["class"] = "dropdown";
                    li.ID = "Module" + row["ModuleID"];

                    HtmlAnchor a = new HtmlAnchor();

                        a.HRef = "javascript:showhide('" + row["ModuleID"] + "')";

                        a.InnerText = row["modtitle"].ToString();

                        Panel div = new Panel();
                        div.ID = "subModulesBar" + row["ModuleID"];
                        div.Attributes["class"] = "subModulesBar";


                        li.Controls.Add(a);
                        ModuleContainer.Controls.Add(li);
                        divcontainer.Controls.Add(div);
                        module = li;
                    }
     else// for the postback loads
     {
                        HtmlGenericControl li = new HtmlGenericControl("li");
                        li.ID = "Module" + row["ModuleID"];

                        Debug.WriteLine("SESSION MODULE = " + Session["PModuleID"].ToString() + " CURRENT MODULE = " + row["ModuleID"].ToString());
                        if (Session["PModuleID"].ToString() == row["ModuleID"].ToString())
                        {
                            Debug.WriteLine("UGUALE SELECTED");
                            li.Attributes["class"] = "dropdown moduleselected";
                        }
                        else
                        {
                            Debug.WriteLine("DIVERSO");
                            li.Attributes["class"] = "dropdown";
                        }





                        HtmlAnchor a = new HtmlAnchor();
                        a.HRef = "javascript:showhide('" + row["ModuleID"] + "')";

                        a.InnerText = row["modtitle"].ToString();

                        Panel div = new Panel();
                        div.ID = "subModulesBar" + row["ModuleID"];
                        div.Attributes["class"] = "subModulesBar";

                        li.Controls.Add(a);
                        ModuleContainer.Controls.Add(li);
                        divcontainer.Controls.Add(div);
                        module = li;

                    }

这是我的JS功能:

 function showhide(id) {

        var fulldrops = document.getElementsByClassName('subModulesBar');
        var lis = document.getElementsByClassName('dropdown');


        for (var i = 0; i < fulldrops.length; i++) {
            if (fulldrops[i].id == "ContentPlaceHolder1_subModulesBar" + id) {
                if (fulldrops[i].style.visibility == "visible") {
                    fulldrops[i].style.visibility = "hidden";
                } else {
                    fulldrops[i].style.visibility = "visible";
                }
            } else {
                fulldrops[i].style.visibility = "hidden";
            }
        }
        for (var i = 0; i < lis.length; i++) {
            if (lis[i].id == "ContentPlaceHolder1_Module" + id) {
                if (lis[i].className == "dropdown moduleselected") {
                    lis[i].className = "dropdown";
                    lis[i].style.backgroundImage = "url('images/arrowdown.png')";
                } else {
                    lis[i].className = "dropdown moduleselected";
                    lis[i].style.backgroundImage = "url('images/arrowup.png')";
                }
            } else {
                lis[i].className = "dropdown";
                lis[i].style.backgroundImage = "url('images/arrowdown.png')";
            }
        }
    }

它可以简单地修改布局(单击按钮时白色背景和向下箭头,不显示灰色和箭头时)。

我读了很多关于这个论点的帖子。但所有这些都建议在pageload中调用该函数。但我无法遵循这种方式,因为我只有在用户点击按钮时才需要存储我的值。

有人能帮助我吗?

0 个答案:

没有答案