隐藏gridview行

时间:2016-02-21 14:08:00

标签: javascript c# asp.net gridview

我需要在Button ASP.NET行内显示/隐藏GridView。 这个代码与GridView相关,请考虑将网格放在FormView

 <asp:FormView
      ID="_fvFormData"
      runat="server"
      DataKeyNames="id"
      DataSourceID="_sdsData"
      DefaultMode="Edit" 
      Enabled="false" 
      Visible="false"
      Width="100%">
      <EditItemTemplate>
          <asp:Table runat="server">
              <asp:TableRow>
                  <asp:TableCell>
                       <asp:GridView
                            ID="_gvAttachments" 
                            ClientIDMode="Static"
                            DataKeyNames="id"
                            runat="server"
                            DataSourceID="_sdsAttachments" 
                            AutoGenerateColumns="false"
                            AutoGenerateEditButton="false"
                            EmptyDataText="No attachment."
                            ShowHeader="true" 
                            ShowFooter="true"
                            AllowSorting="true"
                            AllowPaging="false" >
                            <HeaderStyle CssClass="header" />
                            <FooterStyle CssClass="footer" />
                            <AlternatingRowStyle CssClass="even" />
                            <RowStyle CssClass="odd" />
                                <Columns>
                                    <asp:TemplateField HeaderText="File">
                                         <ItemTemplate>
                                              <asp:LinkButton 
                                                   ID="_lnkOpenFile"
                                                        ClientIDMode="Static"
                                                        runat="server" 
                                                        Text='<%#Eval("attachment") %>' 
                                                        CommandName="OpenFile" 
                                                        CommandArgument='<%#Eval("id") %>' />
                                                    <br />
                                                    <asp:FileUpload 
                                                        ID="_fuRowAttach" 
                                                        ClientIDMode="Static"
                                                        AllowMultiple="false" 
                                                        onchange="CheckFile(this)" 
                                                        runat="server" />
                                                    &nbsp;
                                                    <asp:Button 
                                                        ID="_btnUpload" 
                                                        ClientIDMode="Static" 
                                                        runat="server" 
                                                        Text="Carica" 
                                                        CommandName="UploadFile" 
                                                        CommandArgument='<%#Eval("id_type")%>'
                                                        CssClass="butt_blu_small" />
                                                </ItemTemplate>
                                                <EditItemTemplate>
                                                    &nbsp;
                                                </EditItemTemplate>
                                            </asp:TemplateField>
                                </Columns>
                   </asp:TableCell>
              </asp:TableRow> 
          </asp:Table>
      </EditItemTemplate>
  </asp:FormView>

我写的javascript代码如下:

 function CheckAttach(item)
 {
     if (item == null)
         return;

     if (isBlank(item.value))
         return;

     var _btnUpload= item.closest("td").find("[id*=_btnUpload]");

     _btnUpload.show();
 }

我的目的是仅在_btnUpload附加了文件时显示_fuRowAttach窗口小部件...不幸的是item元素似乎没有实现.closest()方法因此我无法找到上传按钮。

有没有办法在此上下文中安全地找到_btnUpload

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法:

  1. 首先我们需要隐藏&#39; _btnUpload按钮。我们无法使用Visibile标记的asp属性,因为它与javascript / jquery的属性管理冲突。
  2. 使用.closest.find方法,我们必须从引用的jquery对象中获取javascript对象。
  3. 第一步可以通过几种方式完成。在这种情况下,由于按钮存在于不可预测的网格行数中,因此我使用了类引用:

     <asp:Button 
         ID="_btnUpload" 
         ClientIDMode="
         runat="server" 
         Text="Carica" 
         CommandName="UploadFile" 
         CommandArgument='<%#Eval("id_type")%>'
         CssClass="butt_blu_small upload_bott" />
    

    然后我在我的javascript代码中隐藏了这个类的所有元素:

        $('.upload_bott').hide();
    

    然后javascript事件处理程序变为:

    function CheckFile(item) {
        if (item == null)
            return;
    
        var _item = $(item);
    
        var _btnUpload = _item.closest("tr").find("[id*=_btnUpload]");
    
        if (isBlank(_item.val()))
        {
             _btnUpload.hide();
             return;
        }
    
        _btnUpload.show();
    }