2012-08-13 86 views
0

我使用2 WebForms ans我想使用一個Web窗體並從此我想要打開第二個Web窗體的對話框。 我想打開對話框,如果我從ListView中點擊一個LinkBut​​ton,它工作正常,但我需要爲第二個Webform的值,所以我首先打開對話框。這個對話框是空的。關閉此對話框後,值將發送到會話。是否可以在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); 

      } 

     } 

...

我想,我救我的價值觀在會話和比開放對話框

塔拉索夫

+0

您是否考慮過在鏈接點擊時使用異步回調服務器並打開響應的第二個表單? – slawekwin 2012-08-13 11:18:19

+0

否................ – Tarasov 2012-08-13 11:33:14

回答

0

JavaScript代碼總是先叫在服務器端代碼之前..你必須考慮替代方式...您可以使用ListView的ItemCommand屬性來設置Session值,然後調用Codebehind中的Javascript函數來打開Popup。

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

我得到一個錯誤,如果我使用此Code..System.InvalidOperationException:ListView「myListView」有一個SelectedIndexChanging-Event執行。什麼是參數密鑰? – Tarasov 2012-08-13 13:54:57

+0

我已經編寫了上面的代碼,只是爲了讓您瞭解如何通過ItemCommand實現所需的功能......請勿盲目複製粘貼...您需要查看http://msdn.microsoft.com/zh-cn/ us/library/system.web.ui.webcontrols.listview.itemcommand.aspx文章,以便您能夠正確理解此方法...並且「RegisterStartupScript」是一種從代碼後面調用Javascript函數的方法...您可以調用這將打開您的彈出窗口...請參閱http://msdn.microsoft.com/en-us/library/aa479390.aspx文章以獲取更多想法... – 2012-08-14 05:52:38

1

,如果我正確地理解你的問題,是的,你可以使用JavaScript的服務器端與ClientScriptManager.RegisterStartupScript方法在這裏是一個MSDN文章中詳細解釋它

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

+0

不,我的C#代碼將關於會話值的信息發送給第二個窗體,我的javascript代碼使用第二個窗體打開對話框。但希望首先發送的值,並打開與會話中的這個值的對話框,我不知道我是如何使它 – Tarasov 2012-08-13 11:38:00

相關問題