2010-01-19 54 views
4

我使用jQuery FaceBox來顯示一個文本框,一個下拉列表和一個按鈕。用戶可以在文本框中寫入文本,在ddl中選擇一個值,然後按下按鈕。這觸發了代碼隱藏中的一些代碼。 FaceBox顯示正常,並且其中的內容也可以。此外,按鈕事件被觸發。這是按鈕事件處理程序的代碼:jQuery FaceBox中的按鈕事件

protected void Button1_Click(object sender, EventArgs e) 
    { 
     _favorit = new Favoritter(); 
     ListItem fav = ddl_favoritter.SelectedItem; 
     _favorit.FavoritterFolderID = int.Parse(fav.Value); 
     //_favorit.FavoritterFolderID = Convert.ToInt32(ddl_favoritter.SelectedItem); 
     _favorit.FavoritterNavn = txt_favoritNavn.Text; 
     _favorit.FavoritterUserID = UserID; 
     _favorit.FavoritterUrl = HttpContext.Current.Request.Url.ToString(); 
     FavoritterManager.InsertFavoritter(_favorit); 
    } 

創建業務對象,並使用從控件讀取的值設置其屬性。然後將該對象插入數據庫,該數據庫運行良好。問題在於文本框和下拉列表值設置不正確。文本框的值是空的,即使我在文本框中寫入,ddl選擇的值是allways 1,並且在我點擊按鈕之前選擇另一個ddlitem。該DDL加載這樣的:

if (!Page.IsPostBack) 
      { 
       _favoritter = FavoritterFolderManager.GetFavoritterFolderByUser(UserID); 
       ddl_favoritter.DataSource = _favoritter; 
       ddl_favoritter.DataBind(); 

      } 

我試圖把這個代碼,如果(Page.IsPostBack!)之外,還使用一個ObjectDataSource,還是同樣的問題加油吧。這就像控制按鈕被「重置」一樣,我認爲它與FaceBox沒有任何關係,因爲它只是顯示包含控件的div ......然後,它可能會再次... 有任何想法嗎?

這是aspx頁面代碼:(!的IsPostBack)

<div id="showme" style="display:none;"> 
         Add to favourites.<br /> 
         <br /> 
         <p> 
          Title:&nbsp;<span><asp:TextBox ID="txt_favoritNavn" runat="server"></asp:TextBox></span></p> 
         <p> 
          select folder:&nbsp;<span><asp:DropDownList ID="ddl_favoritter" runat="server" DataTextField="FavoritterFolderNavn" 
           DataValueField="FavoritterFolderID" AppendDataBoundItems="true"> 
          </asp:DropDownList> 
          </span> 
         </p> 
         <br /> 
         <asp:Button ID="Button1" runat="server" Text="Gem" onclick="Button1_Click"/> 
        </div> 

回答

0

我發現在這個線程的答案:

Facebox adding commas to input

謝謝你們,謝謝你們尼克Craver的幫助

+0

很高興您發現了一些可行的工具......不要忘記將您的答案標記爲已接受的答案,以便將來的用戶發現此問題知道該去哪裏。 – 2010-01-21 02:15:11

+0

是的,我試圖接受它,但我得到了一個對話,說我可以在5個小時內接受我自己的答案,這並不適合我的時間表。我會再試一次 - 在5小時內--D – Soeren 2010-01-21 08:20:48

1

你需要有填充文本框,選擇下拉菜單項,如果塊中的代碼,因爲頁面加載事件在按鈕事件之前再次觸發(有關詳細信息,請參閱ASP.NET Page Life Cycle)。您是否嘗試過在控件上啓用視圖狀態?這可能是問題的一部分。

+0

啓用ViewState沒有區別。我嘗試將代碼從buttonevent處理程序移動到if(!IsPostBack)塊中,但結果相同。 – Soeren 2010-01-19 15:27:42

+0

您是否在文本框中啓用了視圖狀態並自行下拉? – 2010-01-19 20:01:51

0

問題是很多這些控件,不只是FaceBox默認附加到身體。 jQuery UI對話框也是如此。

參見修復這個問題:JQuery Facebox Plugin : Get it inside the form tag

當事情發生的<form>標籤外,他們是從ASP.Net是如何工作的斷開。當你點擊提交時,來自這些輸入的值不在表單內,所以沒有提交給服務器......這就是爲什麼你沒有看到值。

這是這個問題,信貸快速解答Kevin Sheffield

圍繞我碰到這條線的功能的init(設置)來到facebox.js戳...

$('body').append($.facebox.settings.faceboxHtml) 

我改變了...

$('#aspnetForm').append($.facebox.settings.faceboxHtml) 
+0

好吧,這讓我可以讀取文本框中的值,但即使我將DataBind放在if(!Page.IsPostBack)中,下拉列表仍會在回發時更改爲索引1。另外,如果我寫前。在文本框中輸入「hhhh」並點擊保存按鈕,數據庫中的值爲「,hhhh」。出於某種原因,它將逗號作爲價值... – Soeren 2010-01-20 08:49:43

1

變化

$('body').append($.facebox.settings.faceboxHtml) 

$('form').append($.facebox.settings.faceboxHtml)