【问题标题】:How can I dynamically create a DIV in C#, add child elements to it, and then hide the DIV (and everything on it)?如何在 C# 中动态创建 DIV,向其中添加子元素,然后隐藏 DIV(及其上的所有内容)?
【发布时间】:2015-06-17 20:52:21
【问题描述】:

我找到了一种从this 给这只猫剥皮的方法,这导致了this,但我想知道将我所有的“slide-uppable”元素放在一个 div 上是否会更好,然后向上滑动那个 div?

更具体地说,我正在 C# 中为 Sharepoint 网页/Web 部件动态创建控件。我有条件地需要隐藏或向上滑动元素的“部分”。

理论上(我认为),我可以像这样创建一个 DIV(面板)(在 C# 中,在我的 *.ascx.cs 文件中):

Panel panelSec2 = new Panel(); // DIV
panelSec2.ID = "panelSection2";

... 然后立即创建控件,如下所示:

boxRequesterName = new TextBox
{
    CssClass = "dplatypus-webform-field-input"
};

...然后将这些控件添加到 DIV/Panel:

panelSec2.Controls.Add(boxRequesterName);
. . .

以这种方式(大概/理论上),我可以在相应的 *.ascx 文件中像在 jQuery 中那样隐藏/向上滑动面板:

$(document).on("change", '[id$=ckbxPaymentForSelf]', function () {
    if (this.checked) {
        var $panelSection2 = $('[id$=panelSection2]');
        $(panelSection2).slideUp();
    }
});

...不必担心为隐藏/滑动指定单独的控件。

我说的对吗?还是我的理论有问题?

【问题讨论】:

    标签: c# jquery html sharepoint-2010


    【解决方案1】:

    我能想到的你的逻辑没有错。

    在 JS 方面可能会使事情变得更简单的一件事是将 ClientIDMode 设置为 Static。然后,您可以使用更直接的 '#ControlID' 语法,而不是属性以您现在拥有的语法结尾。您也可以将 if 语句中的两行合并为 $('[id$=panelSection2]').slideUp()

    【讨论】:

    • 我必须使用“以”结尾,因为 Sharepoint(或一些懒散的恶棍)会在我提供的 ID 前面加上一堆“gobbledygook”,这样名字和 ID 就变成了某种东西喜欢:fajkd;;jlafdjl;dffdjl;panelSection2
    • 是的,它工作得很好(使用 "$('[id$=panelSection2]').slideUp();")
    • 在提供的 ID 中看到分号让我有点惊讶,而且我对 Sharepoint 还不够熟悉,无法说出这是否是 Sharepoint 特有的,但通常 ID 会自动生成以包含 @ 987654324@ 或 _ 分隔父 ID 和控制编号的嵌套树。 Here's an article 更详细地说明了我在说什么。也许它不适用于 Sharepoint,但值得研究。
    • 不,那只是我像猴子或疯子一样敲击键盘来模拟 ID 前面的“希腊语”。正如您可以证明的那样,没有任何可能与莎士比亚混淆的结果。
    • 在这种情况下,您实际上可以使用客户端 ID 模式属性/属性并将其设置为静态来实现我所描述的。我在第一条评论中发布的文章中有更多详细信息。
    猜你喜欢
    • 2011-05-15
    • 2019-04-29
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2014-01-22
    • 2017-03-22
    相关资源
    最近更新 更多