2010-01-19 2 views
4

jQuery FaceBox를 사용하여 텍스트 상자, 드롭 다운 목록 및 버튼을 표시합니다. 사용자는 텍스트 상자에 텍스트를 쓰고 ddl abd에서 값을 선택하여 버튼을 누릅니다. 코드 숨김에서 일부 코드가 실행됩니다. FaceBox는 훌륭하게 보여 주며 그 안에있는 내용도 괜찮습니다. 또한 버튼 이벤트가 발생합니다. 단추 이벤트 핸들러의 코드입니다.asp.net 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); 
    } 

비즈니스 개체가 만들어지고 해당 속성은 컨트롤에서 읽은 값으로 설정됩니다. 개체는 다음 데이터베이스에 삽입됩니다, 잘 작동합니다. 문제는 텍스트 상자와 드롭 다운 값이 올바르게 설정되어 있지 않다는 것입니다. textbox 값은 비어 있으며 ddl selected 값은 1입니다. 텍스트 상자에 썼음에도 불구하고 버튼을 누르기 전에 다른 ddlitem을 선택합니다.

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

      } 

내가 (! Page.IsPostBack) 경우 외부에서이 코드를 넣어 시도하고, 또한 ObjectDataSource를 여전히 같은 문제를 사용하여 작성하십시오 DDL은 다음과 같이로드됩니다. 마치 버튼을 눌렀을 때 컨트롤이 "재설정"된 것과 같고 FaceBox와는 아무 관계가 없다고 생각합니다. 컨트롤이 포함 된 div를 표시하는 것뿐입니다. 그렇다면 다시 ... 어떤 아이디어? (! IsPostBack을) :

는 aspx 페이지의 코드이며,

<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

고마워, 그리고 당신의 도움이

+0

다행히 뭔가를 찾았 기 때문에 ... 답을 표시 한 것을 잊지 마세요.이 질문을하는 미래의 사용자가 어디를 가야하는지 알 수 있습니다. –

+0

그래, 나는 그것을 받아 들일려고했는데, 나는 내 시간표에 맞지 않는 5 시간 만에 내 대답을 받아 들일 수 있다고 말하는 대화를 얻었다. 나는 그것을 다시 한번 발사 할 것이다 - 5 시간 안에 :-D – Soeren

1

당신은 텍스트 상자를 채우고 경우 블록의 내부 항목 드롭 다운 메뉴를 선택하는 코드가 필요 페이지 때문에 로드 이벤트는 버튼 이벤트 전에 다시 발생합니다 (자세한 내용은 ASP.NET Page Life Cycle 참조). 컨트롤에서 뷰 상태를 활성화하려고 시도 했습니까? 그것은 문제의 일부일 수 있습니다.

+0

ViewState를 사용하면 아무런 효과가 없습니다. buttonevent 핸들러에서 if (! IsPostBack) 블록으로 코드를 이동하려고 시도했지만 결과는 같습니다. – Soeren

+0

텍스트 상자에서 뷰 상태를 활성화하고 드롭 다운 했습니까? –

0

문제는 FaceBox가 기본적으로 본문에 추가하는 것이 아니라 이러한 컨트롤이 많다는 것입니다. jQuery UI 대화 상자도이를 수행합니다. JQuery Facebox Plugin : Get it inside the form tag

일들이 <form> 태그 외부에서 발생, 그들은 ASP.Net의 작동 방식에서 연결이 해제 :

은 수정이 질문을 참조하십시오. 제출을 클릭하면 해당 입력의 값이 양식 안에 없으므로 서버에 제출하지 않아 ... 값을 볼 수 없습니다.

Kevin Sheffield에 그 질문에, 신용의 신속한 답변입니다 :

I 함수 초기화 (설정)에서이 라인을 통해 제공되는 facebox.js 주위에 파고 ...

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

그걸로 바뀌 었습니다 ...

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

글쎄,이 텍스트 상자에있는 값을 읽을 수 있지만 여전히 (! Page.IsPostBack) 경우 DataBind 경우에도 드롭 다운 인덱스를 포스트 백, 여전히 변경됩니다. 또한, 전 ex. "hhhh"텍스트 상자에 저장 버튼을 누르면 데이터베이스의 값은 ", hhhh"입니다. 웬만한 쉼표로 그 값을 쉼표로 표시합니다 ... – Soeren

1

변경 당신에게 닉 Craver 감사

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

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