2015-12-09 58 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

当我有一些时间时,我会研究这个选项。我需要了解更多关于更新面板的信息。我发现了一个解决方案,我将把这个解决方案放入我的问题中。谢谢! –