2012-08-13 4 views
0

2 개의 WebForms를 사용합니다. 하나의 Webform을 사용하고 싶습니다. 두 번째 Webform과 함께 Dialog를 열고 싶습니다. ListView에서 LinkButton을 클릭하면 제대로 작동하지만 두 번째 Webform에 대한 값이 필요하므로 Dialog를 열려면 먼저 Dialog를 엽니 다. 이 대화 상자는 비어 있습니다. 이 대화 상자를 닫으면 값이 세션으로 전송됩니다.C# 메서드에서 JavaScript 함수를 사용할 수 있습니까?

ASPX :

... 
<script type="text/javascript"> 

     function OpenChild() { 

      var WinSettings = "center:yes;resizable:no;dialogHeight:550px" 
      var MyArgs = window.showModalDialog("Benutzer.aspx", MyArgs, WinSettings); 

     } 

    </script> 
... 
<asp:ListView runat="server" ID="myListView"> 

     <LayoutTemplate> 
      <table id="UserTable" runat="server" border="0" width="800" cellpadding="0" cellspacing="0"> 
       <tr style="background-color:#E5E5FE" class="TableClass"> 
        <th id="th1" runat="server"><asp:LinkButton ID="lnkBenutzer" runat="server" >id_Benutzer</asp:LinkButton></th> 
        <th id="th2" runat="server"><asp:LinkButton ID="lnkemail" runat="server" >id_Email</asp:LinkButton></th> 
        <th id="th3" runat="server"><asp:LinkButton ID="lnkVorname" runat="server" >id_Vorname</asp:LinkButton></th> 
        <th id="th4" runat="server"><asp:LinkButton ID="lnkNachname" runat="server" >id_Nachname</asp:LinkButton></th> 
        <th id="th5" runat="server"><asp:LinkButton ID="lnkTelefon" runat="server" >id_Telefon</asp:LinkButton></th> 
       </tr> 
       <tr runat="server" id="ItemPlaceholder"> 
       </tr> 
      </table> 
     </LayoutTemplate> 

     <ItemTemplate> 

      <tr class="TableClass">  
       <td align="left" ><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label1" Text='<%# Eval("Benutzername") %>' runat="server" OnClientClick="OpenChild()" /></td> 
       <td align="left"><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label2" Text='<%# Eval("eMail") %>' runat="server" OnClientClick="OpenChild()" /></td> 
       <td align="left"><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label3" Text='<%# Eval("Vorname") %>' runat="server" OnClientClick="OpenChild()" /></td> 
       <td align="left"><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label4" Text='<%# Eval("Nachname") %>' runat="server" OnClientClick="OpenChild()" /></td> 
       <td align="left"><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label5" Text='<%# Eval("Telefonnummer") %>' runat="server" OnClientClick="OpenChild()" /></td> 

       <td align="left"><asp:Label ID="Label6" Text='<%# Eval("GUID") %>' runat="server" Visible="False" /></td> 

      </tr> 

     </ItemTemplate> 

     <AlternatingItemTemplate> 

      <tr class="TableClass"> 

       <td align="left" ><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label1" Text='<%# Eval("Benutzername") %>' runat="server" OnClientClick="OpenChild()" /></td> 
       <td align="left"><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label2" Text='<%# Eval("eMail") %>' runat="server" OnClientClick="OpenChild()" /></td> 
       <td align="left"><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label3" Text='<%# Eval("Vorname") %>' runat="server" OnClientClick="OpenChild()" /></td> 
       <td align="left"><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label4" Text='<%# Eval("Nachname") %>' runat="server" OnClientClick="OpenChild()" /></td> 
       <td align="left"><asp:LinkButton CssClass="MyLink" OnCommand="Button1_Command" CommandName="Select" CommandArgument='<%# Container.DataItemIndex %>' ID="Label5" Text='<%# Eval("Telefonnummer") %>' runat="server" OnClientClick="OpenChild()" /></td> 

       <td align="left"><asp:Label ID="Label6" Text='<%# Eval("GUID") %>' runat="server" Visible="False" /></td> 

      </tr> 

     </AlternatingItemTemplate> 

     </asp:ListView> 

C# 코드 :

...

protected void Button1_Command(object sender, CommandEventArgs e) 
     { 
      if (e.CommandName == "Select") 
      { 
       //Der Index der Zeile wird ermitellt 
       int index = Convert.ToInt32(e.CommandArgument); 

       //Der Inhalt (GUID[Unsichtbar]) wird aus der zeile mit dem Index herausgezogen und übergeben 
       Label lb = (Label)myListView.Items[index].FindControl("Label6"); 

       //Der GUID, Benutzer-Nachname und das Werk werden an eine Session übergeben 
       Session["UserID"] = lb.Text; 
       Session["SearchUser"] = txtBenutzer.Text; 
       Session["DropDownValue"] = dropWerk.SelectedValue; 


       //Es wird eine neue Webform geöffnet 
       Response.Redirect("Benutzer.aspx",true); 

      } 

     } 

...

나는 내 값은 세션에 오픈보다 저장하는 것이 원하는 대화 상자

tarasov

+0

링크 클릭과 응답시 두 번째 양식을 열 때 서버에 대한 비동기 콜백 사용을 고려 했습니까? – slawekwin

+0

아니요 ................ – Tarasov

답변

0

자바 스크립트 코드라고 구체적으로 그것을 설명하는 MSDN 문서가 년대 ClientScriptManager.RegisterStartupScript 방법으로 자바 스크립트를 서버 측을 사용할 수 있습니다 전에 서버 측 코드 ... 당신은 대체 방법에 대해 생각해야만합니다 ... 목록보기의 ItemCommand 속성을 사용하여 세션 값을 설정 한 다음 Codebehind에서 Javascript 함수를 호출하여 팝업을 열 수 있습니다.

protected void ListView_OnItemCommand(object sender, ListViewCommandEventArgs e) 
    { 
    if (String.Equals(e.CommandName, "OpenPopup")) 
    { 

     ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
     Session["UserID"]=((Label)dataItem.FindControl("Label6")).Text; 
     Session["SearchUser"] = txtBenutzer.Text;      
     Session["DropDownValue"] = dropWerk.SelectedValue; 
     Page.ClientScript.RegisterStartupScript(GetType(), "Key", "OpenPopupFunction();", true); 

    }  

} 
+0

이 코드를 사용하면 오류가 발생합니다. System.InvalidOperationException : ListView "myListView"에 SelectedIndexChanging- 이벤트가 실행됩니다. Parameter Key 란 무엇입니까? – Tarasov

+0

필자는 위 코드를 작성하여 ItemCommand를 통해 필요한 기능을 구현하는 방법에 대해 설명합니다 ... pls는 맹목적으로 붙여 넣기를하지 않습니다 ... http://msdn.microsoft.com/en- 우리는/라이브러리/system.web.ui.webcontrols.listview.itemcommand.aspx 문서 그래서 당신이 제대로이 방법을 이해하고 ... "RegisterStartupScript"코드 뒤에 자바 함수를 호출하는 방법입니다 ... 당신은 전화를 할 수 있습니다 이 팝업을 열려면 ... http://msdn.microsoft.com/en-us/library/aa479390.aspx 문서를 참조하십시오. –

1

내가 제대로 질문을 이해한다면, 그래 당신은 여기에 항상 먼저

http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx

+0

아니요, 내 C# 코드는 세션 값을 두 번째 양식으로 보내고 자바 스크립트 코드는 두 번째 웹 폼으로 대화 상자를 엽니 다. 하지만 먼저 값을 보내고 세션에서이 값을 가진 대화 상자를 열고 싶습니다. 어떻게 만들 수 있는지 알 수 없습니다. – Tarasov

관련 문제