在网页中动态添加控件的实例
在网页中经常要动态添加控件的方法,例如上传多个文件,而具体不知道上传多少个文件,通过添加附件按钮来动态添加FileUPLoad控件。具体做法:
第一种方法:在网页中添加一个Panel1容器控件。在Panel1的容器控件中添加FileUpLoad控件。
添加一个命令按钮Button1,Button1.Text="添加附件";
后台代码:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class Blog_NewBlog : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["nClick"] = 0;//定义ViewState.
}
}
private void LoadFileupLoad(int n)//创建自定义方法,用于添加FileUpLoad控件。
{
FileUpload imgfile = new FileUpload();
imgfile.ID = "FileUpload" + n.ToString().Trim();
imgfile.Width = 500;
this.Panel2.Controls.Add(imgfile);
}
protected void Button1_Click(object sender, EventArgs e)//添加附件按钮事件
{
if (ViewState["nClick"] != null)
{
for (int i = 0; i <= Convert.ToInt32(ViewState["nClick"].ToString()); i++)
{
LoadFileupLoad(i);//调用自定义方法。
}
ViewState["nClick"] = Convert.ToInt32(ViewState["nClick"].ToString()) + 1;//ViewState加1
}
}
//引用动态添加的FileUpload控件,把上传的文件保存到服务器上,把文件信息存储到数据库中。
protected void Button8_Click(object sender, EventArgs e)
{
OA jkj = new OA();//自定义类
bool ok = false;//上传的文件是否符合要求
string Ftype = "";//文件类型。
string[] kzm = new string[] { ".jpg", ".tif", ".pdf", ".doc", ".xls", ".txt", ".ppt",".rar" };//上传的文件类型
bool cb = false;//存储插入数据的成功标记。
jkj.StroeProName = "UP_BlogInsert";//存储过程名称
jkj.TableName = "Blog";//保存记录的表名称。
string bid = Guid.NewGuid().ToString();//生成一个唯一标识。
string gk = "";
if (RadioButton1.Checked == true)
{
gk = "公开";
}
else
{
gk = "私人";
}
string[,] sql = new string[,]
{
{"@xm",Profile.xm,"InPut"},
{"@Btitle",jkj.HtmlCode(TextBox1.Text),"InPut"},
{"@Bcontent",FreeTextBox1.Text,"InPut"},
{"@ClassID",DropDownList1.SelectedValue,"InPut"},
{"@Bid",bid,"InPut"},
{"@state",gk,"InPut"},
{"@sendto",TextBox2.Text,"InPut"}
};
if (jkj.ExeComm(sql, "1") == "0")
{
cb = true;//保存成功。
}
HttpFileCollection files = Request.Files;//获取动态控件FileUpload的集合。
string fileName;//文件名
int fsize = 0;//文件的大小
for (int i = 0; i < files.Count; i++)
{
if (files[i].ContentLength <= 0)
continue;
Ftype = System.IO.Path.GetExtension(files[i].FileName);
fsize = files[i].ContentLength;
for (int x = 0; x < kzm.Length; x++)
{
if (Ftype.ToLower() == kzm[x])
ok = true;
}
if (ok == true)
{
string upfilename = DateTime.Now.ToString("yyyymmddhhmmss") + Ftype;
string webpath = Server.MapPath("~/blog/upfiles/");
files[i].SaveAs(webpath + upfilename);//保存上传的文件到服务器
jkj.StroeProName = "UP_BlogFile";
jkj.TableName = "BlogFile";
string[,] bf = new string[,]
{
{"@bid",bid,"InPut"},
{"@fName",upfilename,"InPut"},
{"@ftype",Ftype,"InPut"},
{"@fsize",fsize.ToString(),"InPut"}
};
if (jkj.ExeComm(bf, "1") == "0" && cb == true)
{
jkj.Show("保存成功!");
}
}
else
{
jkj.Show("上传的文件格式符合要求!");
}
}
}
}
第二种方法:使用JavaScript
页面如下:
《HTML>
《HEAD>
<script>
function AddAttachments() {
document.getElementById('attach').innerText = "继续添加附件";
tb = document.getElementById('attAchments');
newRow = tb.insertRow();
newRow.insertCell().innerHTML = "<input name='File' size='50' type='file'> <input type=button value='删除' onclick='delFile(this.parentElement.parentElement.rowIndex)'>";
}
function delFile(index)
{
document.getElementById('attAchments').deleteRow(index);
tb.rows.length > 0?document.getElementById('attach').innerText = "继续添加附件":document.getElementById('attach').innerText = "添加附件";
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="form1" method="post" runat="server" enctype="multipart/form-data">
<div><table id="attAchments"></table></div><span><IMG src="icoAddFl.gif"> </span> <A id="attach" style="font-family:宋体;font-size:9pt;" title="如果您要发送多个附件,您只需多次点击“继续添加附件”即可, 要注意附件总量不能超过发送限制的大小。" onclick="AddAttachments();" href="javascript:;" name="attach">添加附件</A>
<br><br><br><br><br><br>
<asp:Button id="btnSend" runat="server" Text=" 上传 " onclick="btnSend_Click"></asp:Button>
</form>
《/body>《/HTML>
后台代码
protected void btnSend_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
int attCount = 0;
string filePath = "";
for (int i = 0; i < Request.Files.Count; i++)
{
if (Request.Files[i].ContentLength > 0)
{
filePath = Request.Files[i].FileName;
sb.Append("Files" + attCount++ + ": " + filePath + "<br>");
Request.Files[0].SaveAs(Server.MapPath("./") + filePath.Substring(filePath.LastIndexOf("\\") + 1));
}
}
sb.Insert(0, "you upload " + attCount + " files.<br>"); Response.Write(sb.ToString());
}
分享到:
相关推荐
而在asp.net 2.0中,为了方便进行页面导航,新增了一个叫做页面导航控件sitemapdatasource,sitemapdatasource中还可以绑定到不同的其他页面控件,比如treeview,menu等,十分灵活,使到能很方便地实现页面导航的不同...
实例 动态添加、删除DropDownList控件选项 4.5 单选按钮的应用 实例 性别选择 实例 网络考试系统中单选题答案的选择 4.6 复选框的应用 实例 登录身份选择 实例 网络考试系统中多选题答案的选择 4.7 控件连接数据源 ...
实例103 如何在图像中添加文字 实例104 如何以图像填充文字线条 实例105 如何 实现图形绘制拉伸效果 实例106 如何控制图像的显示方式 实例107 如何控制图像的显示质量 实例108 如何绘制渐变色背景 实例109 如何绘制...
实例223 在TextBox控件中显示回车符 297 实例224 只允许输入数字的TextBox控件 298 实例225 在TextBox控件底端显示下划线 299 实例226 屏蔽TextBox控件上的粘贴功能 300 实例227 屏蔽TextBox控件上默认的右键菜单 ...
07_CreateMdb 在程序中动态生成Access数据库。 第14章(\ Chapter14) 示例描述:本章学习使用VC6进行网络开发的方法和技巧。 01_UdpClient 建立UDP连接客户端。 02_UdpServer 建立UDP连接服务器端。 03_...
实例103 如何在图像中添加文字 实例104 如何以图像填充文字线条 实例105 如何实现图形绘制拉伸效果 实例106 如何控制图像的显示方式 实例107 如何控制图像的显示质量 实例108 如何绘制渐变色背景 实例109 如何...
实例076 向窗体中动态添加控件 实例077 公交线路模拟 第3章 图形技术 3.1 绘制图形 实例078 绘制正弦曲线 实例079 绘制艺术图案 实例080 画图程序 实例081 绘制立体模型 实例082 利用IFS算法绘制自然景物 ...
实例036:在屏幕中动态显示多种对话框 82 实例037:手机秘书--重要事情提醒 88 实例038:动态添加或删除菜单 96 实例039: 自定义Android控件实现单选 按钮 100 实例040: 使用自定义控件在屏幕中绘 制一条虚线 104 ...
实例038 在网页中应用浮动框架 58 实例039 创建空白框架 60 实例040 居中显示框架页 62 1.7 无边框窗口 63 实例041 全屏显示无边框有滚动条的窗口 63 实例042 应用CSS+DIV实现指定尺寸无边框无滚动条窗口 65 实例043...
实例076 向窗体中动态添加控件 实例077 公交线路模拟 第3章 图形技术 3.1 绘制图形 实例078 绘制正弦曲线 实例079 绘制艺术图案 实例080 画图程序 实例081 绘制立体模型 实例082 利用IFS算法绘制自然景物 ...