2009-09-01 33 views
1

我在ASP.NET中有網頁。我用jQuery創建了樹視圖控件。我從樹中拖動項目並放入div元素。從ASP.NET獲取動態創建的標籤(jQuery)

<div id="rows" runat="server" class="droppable"> 
</div> 

我使用.append函數從jQuery向該div添加項目。

$(".droppable").append(event.originalTarget.innerHTML); 

它像我想要的那樣工作。但現在我想從ASP.NET代碼中獲取所有丟棄的項目。我使用以下代碼:

protected void Button2_Click(object sender, EventArgs e) 
{ 
    HtmlGenericControl control = (HtmlGenericControl)Page.FindControl("rows"); 
    Label1.Text = control.InnerHtml; 
} 

但它不起作用。我也嘗試了InnerText函數,但仍然沒有。我還將按鈕和標籤控件放入UpdatePanel中,這樣頁面就不會刷新,而我丟棄的項目仍然在div元素中。

如何從ASP.NET代碼動態添加項目。

Lukas

回答

6

你的append()調用只是改變DOM結構。 ASP.NET不知道你做了這個。

您需要將更改存儲到頁面上隱藏的「狀態」字段中,並在代碼隱藏中將其取出。

var droppedItem = event.originalTarget; 
$(".droppable").append(droppedItem.innerHTML); 
$("#myHiddenStateField").get(0).value += "," + droppedItem.id; 

後面的代碼:

string[] droppedItemIds = myHiddenStateField.Value.Split(","); 
+0

記住,服務器端ID將不匹配的客戶端ID。 – ChaosPandion 2009-09-01 17:18:40

+0

完美的作品!謝謝 ! – 2009-09-01 17:20:23

1

ASP.NET只能使用表單元素。當用戶拖動元素上

Request.Form["rows"] 

編輯

你爲什麼不:

所以,如果這些行是例如(輸入[類型=文本]),你可以這樣做創建一個新的隱藏輸入並將相關值放入其中。這樣可以很容易地從上面使用的示例中獲取服務器的值。

1

更好,但爲什麼不能用在可棄的成功事件jQuery的AJAX和記錄通過asp.net的PageMethod的每一滴,那麼你不必內部處理解析HTML你的droppable元素。

這應該讓你開始

http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/

這裏是一個實際的例子,我用

  $('.droppable').droppable({ 
      accept: '#dragList > li, .columnRight li', 
      activeClass: 'ui-state-highlight', 
      hoverClass: 'hoverBorder', 
      drop: function(ev, ui) { 
       $.ajax({ 
        type: "POST", 
        url: "yourPage.aspx/AddDroppable", 
        data: "{'id':'" + ui.draggable.context.id + "'}", 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        success: function(msg) { 
         $("#Result").html(msg.d); 
        } 
       }); 
      } 
     }); 
相關問題