我有一个GridView控件,其中我有一些Fileupload控件(控件数量各不相同), 对于文件上传,我在GridView中有文件上传控件的按钮,在用户上传文件后,他点击了GridView之外的完成。我需要在单击Finish时应用验证,用户必须在单击Finish之前上载所有文件。 GridView在WizardControl中,Finish按钮是Wizard的Finsihed按钮
<asp:GridView ID="Grid1" runat="server" AutoGenerateColumns="false" OnRowCommand="Grid1_RowCommand" CssClass="table">
<Columns>
<asp:TemplateField HeaderText="Data" ItemStyle-HorizontalAlign="Left">
<ItemTemplate>
<div class="col-5" id="statdiv">
<asp:Label ID="lbl1" runat="server" Text="Statement" CssClass="fieldheadingStyle"></asp:Label>
<asp:FileUpload ID="filestatement" runat="server" Width="98%" CssClass="filestat" />
<asp:Label ID="lblstatement" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "StatementFile") %>' CssClass="lblstat"></asp:Label>
</div>
<div class="col-5" id="courtdiv">
<asp:Label ID="Label1" runat="server" Text="Document" CssClass="fieldheadingStyle"></asp:Label>
<asp:FileUpload ID="doc" runat="server" Width="98%" CssClass="filedoc" />
<asp:Label ID="lblcourtdoc" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "DocumentFile") %>' CssClass="lbldoc"></asp:Label>
</div>
<div class="col-2">
<asp:Button ID="btnuploadfiles" runat="server" CommandName="uploadfiles" Text="Upload" />
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
如何在点击完成时验证所有文件控件?
这是我在向导控件中的完成按钮
<FinishNavigationTemplate>
<table class="WizardButtonRow" cellspacing="0">
<tr>
<td align="left">
</td>
<td align="right">
<asp:Button ID="btnFinish" runat="server" Text="Finish" CausesValidation="true" CommandName="MoveComplete" />
</td>
</tr>
</table>
</FinishNavigationTemplate>
我试过这个但是说btnFinish没找到
$("#<%=btnFinish.ClientID%>").click(function(){
});
答案 0 :(得分:0)
你的复杂性是向导控制。它只使页面的一部分可供客户端使用,因此JS只能与这个特定的可见部分进行通信。一种方法是使用基于JS的向导语法,一次只显示一个部分。您可以为每个部分使用div并隐藏不活动的部分。这将使JS能够访问所有元素,因为它们仍在DOM中。
此外,请注意,在浏览器中查看页面后,为fileupload控件生成的html标记很重要。这将有助于理解您的页面呈现,它可以帮助按照每个控件使用的id的顺序,这样您就可以使用正确的id并选择每个并检查它是否有文件。
如果您使用的是.NET Framework 4.0(vs2010)及更高版本,则可以使用asp.net控制标记设置clientidmode = static。这将确保您指定的id是html的呈现ID。有了这个,你可以用这个
选择btnfinish $('#btnfinish').click(function(){
});
或者,使用JQuery,您可以在gridview模板中为文件上载(仅限)设置相同的cssclass。完成后,您可以选择该类的所有元素。这将返回fileupload控件的集合,这可以通过&#39;每个&#39;来循环。 Jquery中的函数。
$('.fileuploadClass').each(function(){ //cycle through all file upload with specified cssclass
if ($(this).val()==''){ //check of it has a file
alert('select file');
return;
}
});