1.前段的GridView代码
<asp:GridView ID="gvList" runat="server" AutoGenerateColumns="False" CssClass="grid"
OnRowDataBound="gvList_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="选择文件">
<ItemTemplate>
<input id="flFile" type="file" runat="server" name="flFile" style=" 520px"/>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" Width="20%"></ItemStyle>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<input type="button" id="btnAdd" runat="server" class="btnS" value="增加文件" onclick="addRow()" />
</HeaderTemplate>
<ItemTemplate>
<input type="button" id="btnDel" runat="server" class="btnS" value="删除" onclick="removeRow(this)"/>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" Width="12%"></ItemStyle>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<div class="tip">
暂无记录!</div>
</EmptyDataTemplate>
</asp:GridView>
//JS添加新的文件选择框
function addRow() {
var gvList = document.getElementById("<%=gvList.ClientID%>");
if (gvList == null) {
return;
}
var dr = gvList.insertRow(gvList.rows.length);
dr.runnat = "server";
var cell = dr.insertCell(0);
cell.innerHTML = "<input name=\"flFile\" type=\"file\" id=\"flFile\" style=\" 520px\"/>";
cell.width = "60%";
cell = dr.insertCell(1);
cell.innerHTML = "<input name=\"btnDel\" type=\"button\" id=\"btnDel\" class=\"btnS\" value=\"删除\" onclick=\"removeRow(this)\"/>";
cell.align = "middle";
cell.width = "40%";
}
//JS删除添加的文本框
function removeRow(obj) {
if(confirm("确定要删除吗?")) {
var gvList = document.getElementById("<%=gvList.ClientID%>");
if (gvList == null) {
return;
}
var index = obj.parentElement.parentElement.rowIndex;
gvList.deleteRow(index);
}
else {
return;
}
}
function AddNewRow(tabId) {
var tb = document.getElementById(tabId);
var newRow;
if (tb.rows[1]) {
newRow = tb.rows[1].cloneNode(true);
}
else {
newRow = document.createElement("tr");
newRow.appendChild(document.getElementById("td"));
}
newRow.style.display = "block";
tb.rows[0].parentElement.appendChild(newRow);
}
//删除行
function DeleteRow(tabId, row) {
var tb = document.getElementById(tabId);
while (row != null && row.tagName != "TR")
row = row.parentNode;
if (tb.rows.length > 1) {
if (row != null && row.parentNode != null)
row.parentNode.removeChild(row);
}
}
//后台的CS代码中在load的时候需要对默认的控件做一个绑定,不然不会自动加载文本选择控件
#region 获取默认的列表
/// <summary>
/// 绑定字段对象列表
/// </summary>
private void BindDataList()
{
this.gvList.DataSource = this.GetDataTable();
this.gvList.DataBind();
}
/// <summary>
/// 构造数据表
/// </summary>
/// <returns></returns>
private DataTable GetDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("File"));
dt.Columns.Add(new DataColumn("FileLen"));
for (int i = 0; i < 1; i++)//默认为1行
{
DataRow row = dt.NewRow();
row["File"] = string.Empty;
row["FileLen"] = string.Empty;
dt.Rows.Add(row);
}
return dt;
}
#endregion
//在前台用jQuery获取网页中所有的file控件,并取出用户添加的文件路径
$("#btnSave,#btnSubmit").click(function() {
$("#hdfEleValid").val(""); //清空验证
var $files = $(":file"); //获取gvList控件下面的选择框
var filePaths = "";
var result;
$files.each(function(index) {
filePath = $(this).val();
if (filePath != "") {
//选择了附件信息
var fileFormat = filePath.substring(filePath.lastIndexOf('.'), filePath.length).toUpperCase(); //取得选择的文件的格式
if (fileFormat == ".PDF" || fileFormat == ".JPG") {
filePaths = filePaths + filePath + "|";
return true;
}
else {
alert("只能上传PDF或JPG格式的文件!");
filePaths = ""; //所有文件路径清空
$("#hdfEleValid").val("Y");
return false;
}
}
});
$("#hdfFileName").val(filePaths.substring(0, filePaths.length - 1)); //将选择的文件路径放在一个隐藏的字段中
return;
});