将父DIV的样式设置为usercontrol

时间:2013-12-26 21:52:07

标签: asp.net vb.net html user-controls parent

我在GridView中有一个动态命名的DIV,它包含一个动态分配的Parent_ID的用户控件。 javascript用于显示或隐藏DIV。我将向您展示两个没有ASP代码的不同行的示例。

第1行显示订单#123456:

<a href="<%#"javascript:collapseExpand('Order_Notes_Panel123456');" %>" >+</a>
<div id='Order_Notes_Panel123456' style="display:none;">
    <uc:Comments_Control id="Comments_Control_ID" runat="server" Parent_ID='123456'/>
</div>

第2行显示订单#678901:

<a href="<%#"javascript:collapseExpand('Order_Notes_Panel678901');" %>" >+</a>
<div id='Order_Notes_Panel678901' style="display:none;">
    <uc:Comments_Control id="Comments_Control_ID" runat="server" Parent_ID='678901'/>
</div>

好消息是用户控件绑定并完美运行。 javascript显示(将样式设置为“display:block;”)并在每次单击“+”时隐藏(样式设置为“display:none;”)相应的DIV。

这是我的问题:用户控件中有一个“回复”链接,当点击时,会进行回发并将控件置于编辑模式。当我在没有包含DIV的其他页面上使用此用户控件时,您将不会注意到任何事情。但是,当“回复”进行回发后,包含的DIV将恢复为style =“display:none;”。

您能否提供如何将父DIV的样式设置为“display:block;”的建议而用户显然正在使用它?我认为当进入编辑模式时,适当的代码会进入用户控件的代码中。

谢谢,
罗布

更新:我发现我的DIV中没有runat = server。由于我正在尝试为每个建立动态ID,因此如果我尝试使用runat,则会出错。这可能就是为什么我无法从背后的代码中找到它......

1 个答案:

答案 0 :(得分:0)

我对自己很开心......(请看YouTube视频中的这句话,你会很高兴的。)

总之,这是我添加的内容:
1.新的Javascript函数将目标DIV的名称添加到隐藏字段(“collapseExpand”函数位于Site.Master中。我无法将“load_div_to_hidden”放在Site.Master中,因为“myhiddenField”不是设置在每一页上 2.新的隐藏字段,用于捕获目标DIV的名称 3.在window.onload上运行新的Javascript函数,检查我们是否有回发,然后显示隐藏字段中的值
4.从链接中的href添加第二个Javascript调用

以下是新的代码片段:

<script type="text/javascript">
    function load_div_to_hidden(obj) {
        var hidden = document.getElementById('<%= myhiddenField.ClientID %>');
        hidden.value = obj;
    }

    function windowOnLoad() {
        var isPostBack = (('<%= IsPostBack %>').toLowerCase() == 'true') ? true : false;

        if (isPostBack == true) {
            var hid_field_value = document.getElementById('<%= myhiddenField.ClientID %>').value;
            var right_div = document.getElementById(hid_field_value);
            right_div.style.display = "block";
        }
    }

    window.onload = windowOnLoad;

</script>



<input type="hidden" id="myhiddenField" runat="server" value="" />


<a href="<%#"javascript:collapseExpand('Order_Notes_Panel123456'); javascript:load_div_to_hidden('Order_Notes_Panel123456');" %>" >+</a>
<div id='Order_Notes_Panel123456' style="display:none;">
<uc:Comments_Control id="Comments_Control_ID" runat="server" Parent_ID='123456'/>
</div>  

像魅力一样!