protected void Page_Load(object sender, EventArgs e)
{
InsertFUC();
} protected void Button1_Click(object sender, EventArgs e)
{
}
/// <summary>
/// 用于保存当前页面上传文件控件集到缓存中
/// </summary>
protected void SaveFUC()
{
//创建动态增加数组
int i=0;
ArrayList AL = new ArrayList();
foreach (Control C in tabTB.Controls)
{
if (C.GetType().ToString() == "System.Web.UI.HtmlControls.HtmlTableRow")
{
HtmlTableCell HTC = (HtmlTableCell)C.Controls[0];
foreach (Control FUC in HTC.Controls)
{
//判断该控件是否为上传控件(TextBox),如果是,则添加到ArrayList中
if (FUC.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox TB = (TextBox)FUC;
TB.ID = "TextBox" + i;
AL.Add(TB);
//Response.Write(TB.ID);
i++;
}
}
}
}
//将保存在数组ArrayList中的所有上传控件(TextBox),添加到缓存中,命名为“FilesControls”
Session.Add("FilesControls", AL);
//Response.Write(AL.Count.ToString());
}
/// <summary>
/// 用于执行添加一个上传文件控件的操作
/// </summary>
protected void InsertFUC()
{
ArrayList AL = new ArrayList();
//清空表格tabFU中原有的上传控件
this.tabTB.Rows.Clear();
//调用GetFUCInfo方法,将存放在缓存中的上传控件添加到表格tabFU中
GetFUCInfo();
//在表格tabFU中添加一个上传控件
HtmlTableRow HTR = new HtmlTableRow();
HtmlTableCell HTC = new HtmlTableCell();
HTC.Controls.Add(new TextBox());
HTR.Controls.Add(HTC);
tabTB.Rows.Add(HTR);
//调用SaveFUC方法,将添加的上传控件保存在缓存中
SaveFUC();
}
/// <summary>
/// 用于读取缓存中存储的上传文件控件集
/// </summary>
protected void GetFUCInfo()
{
ArrayList AL = new ArrayList();
//判断缓存中是否已存在上传控件
if (Session["FilesControls"] != null)
{
//将缓存中的上传控件集存放在数据集ArrayList中
AL = (System.Collections.ArrayList)Session["FilesControls"];
for (int i = 0; i < AL.Count; i++)
{
HtmlTableRow HTR = new HtmlTableRow();
HtmlTableCell HTC = new HtmlTableCell();
HTC.Controls.Add((System.Web.UI.WebControls.TextBox)AL[i]);
HTR.Controls.Add(HTC);
//将上传控件添加到名为tabTB表格中
tabTB.Rows.Add(HTR);
}
}
} protected void Button2_Click1(object sender, EventArgs e)
{
ArrayList AL = new ArrayList();
AL = (System.Collections.ArrayList)Session["FilesControls"];
for (int i = 0; i < AL.Count; i++)
{
Response.Write(((TextBox)tabTB.Rows[i].FindControl("TextBox" + i)).Text);
}
}
为什么我把 InsertFUC()放到Page_Load里正常,但是放到Button1_Click就会出现 “未将对象引用设置到对象的实例” 这个错误,如果放到Page_Load就会再次执行一次Page_Load里的 InsertFUC(),这样插入数据库的时候就会把空的TEXTBOX里的值传进去,我该怎么办,各位高手救救我吧~!~!~!
{
InsertFUC();
} protected void Button1_Click(object sender, EventArgs e)
{
}
/// <summary>
/// 用于保存当前页面上传文件控件集到缓存中
/// </summary>
protected void SaveFUC()
{
//创建动态增加数组
int i=0;
ArrayList AL = new ArrayList();
foreach (Control C in tabTB.Controls)
{
if (C.GetType().ToString() == "System.Web.UI.HtmlControls.HtmlTableRow")
{
HtmlTableCell HTC = (HtmlTableCell)C.Controls[0];
foreach (Control FUC in HTC.Controls)
{
//判断该控件是否为上传控件(TextBox),如果是,则添加到ArrayList中
if (FUC.GetType().ToString() == "System.Web.UI.WebControls.TextBox")
{
TextBox TB = (TextBox)FUC;
TB.ID = "TextBox" + i;
AL.Add(TB);
//Response.Write(TB.ID);
i++;
}
}
}
}
//将保存在数组ArrayList中的所有上传控件(TextBox),添加到缓存中,命名为“FilesControls”
Session.Add("FilesControls", AL);
//Response.Write(AL.Count.ToString());
}
/// <summary>
/// 用于执行添加一个上传文件控件的操作
/// </summary>
protected void InsertFUC()
{
ArrayList AL = new ArrayList();
//清空表格tabFU中原有的上传控件
this.tabTB.Rows.Clear();
//调用GetFUCInfo方法,将存放在缓存中的上传控件添加到表格tabFU中
GetFUCInfo();
//在表格tabFU中添加一个上传控件
HtmlTableRow HTR = new HtmlTableRow();
HtmlTableCell HTC = new HtmlTableCell();
HTC.Controls.Add(new TextBox());
HTR.Controls.Add(HTC);
tabTB.Rows.Add(HTR);
//调用SaveFUC方法,将添加的上传控件保存在缓存中
SaveFUC();
}
/// <summary>
/// 用于读取缓存中存储的上传文件控件集
/// </summary>
protected void GetFUCInfo()
{
ArrayList AL = new ArrayList();
//判断缓存中是否已存在上传控件
if (Session["FilesControls"] != null)
{
//将缓存中的上传控件集存放在数据集ArrayList中
AL = (System.Collections.ArrayList)Session["FilesControls"];
for (int i = 0; i < AL.Count; i++)
{
HtmlTableRow HTR = new HtmlTableRow();
HtmlTableCell HTC = new HtmlTableCell();
HTC.Controls.Add((System.Web.UI.WebControls.TextBox)AL[i]);
HTR.Controls.Add(HTC);
//将上传控件添加到名为tabTB表格中
tabTB.Rows.Add(HTR);
}
}
} protected void Button2_Click1(object sender, EventArgs e)
{
ArrayList AL = new ArrayList();
AL = (System.Collections.ArrayList)Session["FilesControls"];
for (int i = 0; i < AL.Count; i++)
{
Response.Write(((TextBox)tabTB.Rows[i].FindControl("TextBox" + i)).Text);
}
}
为什么我把 InsertFUC()放到Page_Load里正常,但是放到Button1_Click就会出现 “未将对象引用设置到对象的实例” 这个错误,如果放到Page_Load就会再次执行一次Page_Load里的 InsertFUC(),这样插入数据库的时候就会把空的TEXTBOX里的值传进去,我该怎么办,各位高手救救我吧~!~!~!
解决方案 »
- fck编辑器上传的图片视频到了网页上显示不出来怎么办
- 将接受消息队列的可执行文件放入任务计划,这个程序应该怎么做?
- 请教一个底级问题关于ImageButton
- 用Command控件建立一个Access数据库
- 散分...不知道是2.0的Bug,还是VS2005的Bug...
- 在本地不会出现这样的问题 发布到服务器上就报错Oracle.DataAccess.Client.OracleConnection”的类型初始值设定项引发异常
- 求助~ TreeNode的引用的是那个命名空间呀
- DataBinder.Eval( Container.DataItem, "picgif")的用法问题
- 谁有RowUpdating的范例代码 分享一下 谢谢
- 对话框问题?
- 这个谁知道啊~~~急
- 请问一个连接字符串的问题
你在执行按钮事件的时候先判断 其是否为null
如果写在按钮事件里,这行报错了~!
只有生成之后才会执行一些相应的初始化事件
{
InsertFUC();
}
protected void Button1_Click(object sender, EventArgs e)
{
InsertFUC();
}
由于ViewState的作用,你把控件再添加进去,值应该会被保留的至于值为什么变空了,建议InsertFUC()不要有给控件赋值的语句或函数,单独提供一个只添加控件的函数给Page_Load调用,先试试吧
在Pager_Load里每次都会执行
InsertFUC(); 通过ViewState记录增加的数据,在Post_Load里判断不符合添加
也可使用JS动态添加
http://topic.csdn.net/u/20070531/16/8627dd88-14ea-48f7-85ae-6399badec95b.html