Как бы вы манипулировали списком html на стороне сервера? - PullRequest
1 голос
/ 15 декабря 2009

Как бы вы динамически создали новый HTML-элемент li в коде позади (на стороне сервера)?

Как бы вы получили доступ к li в существующем элементе ul на стороне сервера? Мне нужно, чтобы FindControl получил все li предметов, а затем добавил новый li предмет.

Обновление

Я использую jquery ajax для доступа к стороне сервера, поэтому я должен использовать статический WebMethod. FindControl - не статический метод.

 <script type="text/javascript">
        $(function(){
        $("#sortable").sortable();
        $("#sortable").disableSelection();
    });

Это jQuery Ajax Call

$(document).ready(function() {
        // Add the page method call as an onclick handler for the div.
        $("#Result").click(function() {
            $.ajax({
                type: "POST",
                url: "DraggableTest.aspx/SomeMethod",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(msg) {
                    // Replace the div's content with the page method's return.
                    $("#Result").text(msg.d);
                }
            });
        });
    });

Это CodeBehind

[WebMethod]
    public static string SomeMethod()
    {
        // using System.Web.UI.HtmlControls;
        HtmlGenericControl ul = FindControl("sortable") as HtmlGenericControl;
        if (ul != null)
        {
            foreach (HtmlControl c in ul.Controls)
            {
                if (c.TagName.ToLower() == "li")
                {
                    // Processing here
                }
            }
        }


    }

Ответы [ 2 ]

4 голосов
/ 15 декабря 2009

Вы можете добавить элемент списка HTML, используя HtmlGenericControl :

System.Web.UI.HtmlControls.HtmlGenericControl li = new System.Web.UI.HtmlControls.HtmlGenericControl("li");
li.InnerHtml = "<b>Some text</b>";
Page.Controls.Add(li);

В приведенном выше примере я только что добавил элемент управления непосредственно в конец страницы - вам, очевидно, нужно подумать, к какому родительскому элементу вы добавите его.

Обновление Чтобы ответить на дополнительную часть вопроса, который вы задали после редактирования, если ваш элемент управления ul имеет идентификатор ulListId и помечен runat="server, вы можете найти его программно, используя метод FindControl . Затем просто переберите детей ul:

        // using System.Web.UI.HtmlControls;
        HtmlGenericControl ul = Page.FindControl("ulListId") as HtmlGenericControl;
        if (ul != null) {
            foreach (HtmlControl c in ul.Controls)
            {
                if (c.TagName.ToLower() == "li")
                {
                    // Processing here
                }
            }
        }
0 голосов
/ 15 декабря 2009

Вы можете использовать HtmlGenericControl для создания элемента li на стороне сервера. Другой альтернативой может быть использование LiteralControl.

РЕДАКТИРОВАТЬ: Если ваш

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...