2016-07-30 57 views
0

我試圖構建一個ModalPopUp作爲控件。它有無論文對照:ModalPopUp作爲用戶控件ASP.NET C#

  • TextBox - 佔位過濾
  • Button - 搜索按鈕
  • Button - 取消按鈕
  • GridView - 要顯示的結果

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> 

的背後代碼: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是我的控制包含一個TextBoxButton(執行搜索調用方法:fillGridView())和GridView

當我嘗試執行搜索點擊綁定GridView。在我的用戶控制的GridView中獲得結果的最佳方式是什麼?

+0

,你能告訴我們的搜索代碼? – jonju

+0

我已放置它。 –

回答

0

檢查搜索按鈕autopostback是否設置爲true。同樣,當gridview控件中的搜索按鈕位於gridview_itemchanged事件中時,您將獲得搜索按鈕事件。希望能工作

1

您還沒有發佈任何代碼,因此很難說出它爲什麼不能正常工作。下面是一個工作示例,它顯示了Bootstrap模式彈出窗口 - >允許用戶搜索 - >顯示結果在GridView的模式彈出內:

後面的代碼:

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> 

輸出:

Displaying a search form inside a modal popup

+0

我認爲這不是一個很好的解決方案,因爲它不是用戶控件。在我的情況下,我需要將控件放在用戶控件中。 –

+0

因此將其複製到用戶控件中。就像那樣簡單 –