2016-02-21 53 views
0

我需要顯示/隱藏內GridView行。 這涉及到GridView代碼,請考慮網格置於FormViewgridview行內的隱藏按鈕

<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

謝謝你的時間。

回答

0

我找到了解決我的問題:

  1. 首先我們需要「隱藏」的_btnUpload按鈕。我們不能使用asp標籤的Visibile屬性,因爲它與javascript/jquery的屬性管理衝突。
  2. 要使用.closest.find方法我們必須從參考的javascript對象中獲得jquery對象。

第一步可以用幾種方法完成。在這種情況下,由於按鈕是存在於網格的行的不可預測的數,我使用的類參考:

<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(); 
}