2015-12-09 60 views
1

我已經在互聯網上搜索過關於這個主題的內容,並且什麼都沒有提出。要麼我有一個困難的措辭我的問題,或者我做的事情是如此錯誤,以至於沒有人曾經嘗試過...綁定gridview INSIDE ModalPopupExtender

我有一個gridview。我在gridview中使用一個按鈕來執行命令來打開ModalPopupExtender。這部分工作很好。一旦我打開彈出窗口,我希望能夠按下按鈕來執行一個函數,該函數將執行一個Sql查詢並綁定INSIDE彈出面板中的一個GridView。之後,用戶可以使用gridview執行一個動作來關閉模式彈出窗口。

這裏是我的HTML -

<cc1:ModalPopupExtender runat="server" ID="MPE_Issue" PopupControlID="pnlIssue" BackgroundCssClass="ModalPopupBG" 
      TargetControlID="Hid_Sno" CancelControlID="btnIssueCancel"> 
     </cc1:ModalPopupExtender> 
     <asp:Panel ID="pnlIssue" runat="server" Style="display: none" > 
      <div class="HelloPopup"> 
       <div> 
        <br /> 
        <h2>&nbsp;&nbsp;&nbsp;Issue Equipment</h2> 
        <br /> 
        <asp:Panel runat="server" ID="pnlIssueSearch" DefaultButton="btnIssueSearch"> 
         <div class="block" style="text-align: right; margin-left: 50px"> 
          <asp:Label CssClass="lblBlock" runat="server" ID="lblIssueSearch" Text="Search:"></asp:Label> 
         </div> 
         <div class="block"> 
          <asp:TextBox runat="server" ID="txtIssueSearch" Width="160px"></asp:TextBox> 
          <asp:ImageButton runat="server" ID="btnIssueSearch" ImageUrl="../Images/search.png" OnClick="btnIssueSearch_Click" /> 
         </div> 
        </asp:Panel> 
        <asp:Panel runat="server" ID="pnlIssueSubmit" DefaultButton="btnIssueSubmit"> 
         <div style="width: 275px; margin: auto; height: 295px; overflow: scroll;"> 
          <asp:GridView runat="server" ID="gvIssue" AutoGenerateColumns="false" CssClass="mGrid" OnRowCommand="gvIssue_RowCommand"> 
           <Columns> 
            <asp:TemplateField HeaderText="Qty"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtIssueQty" runat="server" Text='<%# Bind("QTY") %>'></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:BoundField HeaderText="Assignment" DataField="FIRST_NAME" /> 
           </Columns> 
          </asp:GridView> 
         </div> 
         <div class="center"> 
          <asp:Button runat="server" ID="btnIssueSubmit" Text="Issue" OnClick="btnIssueSubmit_Click" /> 
          <input type="button" id="btnIssueCancel" value="Cancel" /> 
         </div> 
        </asp:Panel> 

而且代碼隱藏 -

protected void gv1_RowCommand(object sender, GridViewCommandEventArgs e) 
     { 
      if (e.CommandName == "issue") 
      { 
       GridViewRow gvr3 = (GridViewRow)(((ImageButton)e.CommandSource).NamingContainer); 
       string itemNo = ((Label)gvr3.Cells[0].FindControl("lblItemNo")).Text; 
       btnIssueSubmit.Visible = false; 
       txtIssueSearch.Text = ""; 

       MPE_Issue.Show(); 

      }   
    protected void btnIssueSearch_Click(object sender, ImageClickEventArgs e) 
    { 
     string query = "SELECT QTY, NEW_EMP_ID as NAME FROM TRANSACTION_TRACKING WHERE NEW_EMP_ID = @inputINT"; 
     string inputString = "%" + txtIssueSearch.Text + "%"; 
     int inputINT = Convert.ToInt32(txtIssueSearch.Text); 

     SqlConnection con = new SqlConnection(CS); 
     SqlDataAdapter da = new SqlDataAdapter(query, con); 
     SqlParameter parameter = new SqlParameter("inputString", inputString); 
     SqlParameter parameter2 = new SqlParameter("inputINT", inputINT); 
     da.SelectCommand.Parameters.Add(parameter); 
     da.SelectCommand.Parameters.Add(parameter2); 

     DataSet ds = new DataSet(); 
     da.Fill(ds); 
     gvIssue.DataSource = ds; 
     gvIssue.DataBind(); 

     btnIssueSubmit.Visible = true; 

     MPE_Issue.Show(); 

    } 

編輯/解決方案 我會着手解決這個問題的錯誤。我想覆蓋asp.net的本質,而不是隨流而動並系統地解決問題。爲了克服這個問題,我改變了我的數據綁定到它自己的方法,並讓面板中的按鈕激活該方法,將彈出控件設置爲Open(),並將布爾值從false設置爲true。然後在page_load上,我有一個事件檢查布爾值,並自動執行數據Method(如果它爲true)(因此搜索參數在文本框中)。

謝謝大家的建議和幫助。

+0

我想弄清楚發生了什麼事。我一直這樣做。合適的彈出窗口是否打開? pnlIssue? – wolfeh

+0

它確實打開了正確的面板。我實際上找到了解決方案。 –

回答

0

我會着手解決這個問題的錯誤。我想覆蓋asp.net的本質,而不是隨流而動並系統地解決問題。爲了克服這個問題,我改變了我的數據綁定到它自己的方法,並讓面板中的按鈕激活該方法,將彈出控件設置爲Open(),並將布爾值從false設置爲true。然後在page_load上,我有一個事件檢查布爾值,並自動執行數據Method(如果它爲true)(因此搜索參數在文本框中)。

1

如果你讓你的pnlIssueSubmit成爲UpdatePanel,那麼在btnIssueSearch上做一個asyncpostback觸發器不會解決你的問題嗎?因爲你的imageButton需要做一個回貼爲了刷新你的網格,但你會失去你的模態。事情是這樣的:

<asp:UpdatePanel id="pnlIssueUpdate" runat="server"> 
<ContentTemplate> 
    <asp:Panel runat="server" ID="pnlIssueSubmit" DefaultButton="btnIssueSubmit"> 
     <div style="width: 275px; margin: auto; height: 295px; overflow: scroll;"> 
      <asp:GridView runat="server" ID="gvIssue" AutoGenerateColumns="false" CssClass="mGrid" OnRowCommand="gvIssue_RowCommand"> 
       <Columns> 
        <asp:TemplateField HeaderText="Qty"> 
         <ItemTemplate> 
          <asp:TextBox ID="txtIssueQty" runat="server" Text='<%# Bind("QTY") %>'></asp:TextBox> 
         </ItemTemplate> 
        </asp:TemplateField> 
        <asp:BoundField HeaderText="Assignment" DataField="FIRST_NAME" /> 
       </Columns> 
      </asp:GridView> 
     </div> 
     <div class="center"> 
      <asp:Button runat="server" ID="btnIssueSubmit" Text="Issue" OnClick="btnIssueSubmit_Click" /> 
      <input type="button" id="btnIssueCancel" value="Cancel" /> 
     </div> 
    </asp:Panel> 
</ContentTemplate> 
<Triggers> 
    <asp:asyncPostBackTrigger ControlID="btnIssueSearch" /> 
</Triggers> 

+0

當我有一些時間時,我會研究這個選項。我需要了解更多關於更新面板的信息。我發現了一個解決方案,我將把這個解決方案放入我的問題中。謝謝! –