2016-07-30 19 views
0

Ich versuche, ein ModalPopUp als Steuerelement zu erstellen. Seine Habe Thesen Kontrollen:ModalPopUp als Benutzersteuerelement ASP.NET C#

  • TextBox - Platzhalter für Filter
  • Button - Search Button
  • Button - Abbrechen-Button
  • GridView - Ergebnisse anzuzeigen

Screen of Search

<ajax:toolkitscriptmanager id="searchPopUp" runat="server"></ajax:toolkitscriptmanager> 
<asp:Panel 
    BackColor="White" 
    ID="searchPanel" 
    CssClass="modalPopup" 
    runat="server" 
    Style="display: table"> 

    <div class="myContainer"> 
     <uc1:ScreenSearch 
      runat="server" 
      ID="mySearch" /> 

     <asp:Button ID="btnToHide" runat="server" Text="Tohide" Style="display: none" /> 
     <asp:Button ID="btnToShow" runat="server" Text="ToShow" Style="display: none" /> 
    </div> 
    </asp:Panel> 

<ajax:ModalPopupExtender 
    ID="ModalPopUpSearch" 
    runat="server" 
    TargetControlID="btnToShow" 
    PopupControlID="searchPanel" 
    CancelControlID="btnToHide" 
    DropShadow="true" 
    BackgroundCssClass="modalBackground"> 
</ajax:ModalPopupExtender> 

Code hinter: uc1:ScreenSearch

protected void Page_Load(object sender, EventArgs e){...} 

protected void fillGridView() 
     { 
      myDao dao = new myDao(); 

      DataSet ds = new DataSet(); 
      ds = dao.retornarPesquisa(txtFilter.Text); //return data source 
      DataTable dt = new DataTable(); 

      gv.DataSource = ds; 
      gv.DataBind(); 
     } 

uc1:ScreenSearch ist meine Kontrolle, dass ein TextBox, Button (Suche starten Aufruf der Methode: fillGridView()) enthalten und GridView.

Wenn ich versuche, die Suche durchzuführen, klicken Sie auf Bindung GridView. Was ist der beste Weg, um Ergebnisse in diesem GridView meiner Benutzerkontrolle zu erhalten?

+0

können Sie uns zeigen Sie Ihren Code für die Suche? – jonju

+0

Ich habe es platziert. –

Antwort

0

Überprüfen Sie, ob die Suchschaltfläche Autopostback auf True eingestellt ist. Außerdem erhalten Sie das Ereignis der Schaltfläche "Suchen" im Gridview_itemchanged-Ereignis, da sich die Suchschaltfläche in der Gridview-Steuerung befindet. Hoffe, dass es funktioniert

1

Sie haben nichts von Ihrem Code so geschrieben, es ist schwer zu sagen, warum es nicht funktioniert. Unten ist ein Arbeitsbeispiel, das ein Bootstrap modales Popup anzeigt -> ermöglicht einem Benutzer zu suchen -> zeigt die Ergebnisse in einem GridViewinnerhalb des modalen Popup:

-Code hinter:

public class Person 
{ 
    public string Name { get; set; } 
    public string Surname { get; set; } 
} 

public partial class ModalPopupFromGridView : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void btnSearch_Click(object sender, EventArgs e) 
    { 
     //Use txtSearch.Text to lookup the data you want to bind to the GridView, mine is hardcoded for the sake of simplicity 
     var p1 = new Person { Name = "Name 1", Surname = "Surname 1" }; 
     var p2 = new Person { Name = "Name 2", Surname = "Surname 2" }; 
     GridView1.DataSource = new List<Person> { p1, p2 }; 
     GridView1.DataBind(); 
     ScriptManager.RegisterStartupScript(this, this.GetType(), "myModal", "showPopup();", true); 
    } 
} 

.ASPX:

<head runat="server"> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script> 
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
    <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" /> 
    <script type="text/javascript"> 

     //It'svery important that showPopup() is outside of jQuery document load event 
     function showPopup() { 
      $('#myModal').modal('show'); 
     } 

     $(function() { 
      $(".show").click(function() { 
       showPopup(); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <a href="#" class="show">Show Popup</a> 
     <div id="myModal" class="modal fade"> 
      <div class="modal-dialog"> 
       <div class="modal-content"> 
        <div class="modal-header"> 
         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
         <h4 class="modal-title" id="myModalLabel">Details</h4> 
        </div> 
        <div class="modal-body"> 
         <asp:TextBox ID="txtSearch" runat="server"> 
         </asp:TextBox><asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" /> 
         <br /><br /> 
         <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"> 
          <Columns> 
           <asp:BoundField DataField="Name" HeaderText="Name" /> 
           <asp:BoundField DataField="Surname" HeaderText="Surname" /> 
           <asp:TemplateField HeaderText="User Details"> 
            <ItemTemplate> 
             <a class="details" href="#" data-name='<%# Eval("Name") %>' data-surname='<%# Eval("Surname") %>'>Details</a> 
            </ItemTemplate> 
           </asp:TemplateField> 
          </Columns> 
         </asp:GridView> 
        </div> 
        <div class="modal-footer"> 
         <button type="button" class="btn btn-primary" data-dismiss="modal">Close</button> 
        </div> 
       </div> 
      </div> 
     </div> 
    </form> 
</body> 

Ausgang:

Displaying a search form inside a modal popup

+0

Ich denke, dass dies nicht eine gute Lösung für mich ist, weil es nicht eine Benutzerkontrolle ist. In meinem Fall brauche ich, dass Kontrollen in einer Benutzerkontrolle platziert werden. –

+0

Also kopieren Sie es in ein Benutzersteuerelement. Es ist so einfach –