我在后台写自动生成表格,表格里自动生成textbox,输入数据提交数据库,
我点一下“生成一行”按钮就生成一行,void bind()必须在pageload()里边,写入数据库的时候才能得到textbox的值,这样就出问题了,按牛执行了,pageload要在下一次提交服务器的时候才执行,就是生成行不能马上出来,用Response.Redirect(HttpContext.Current.Request.RawUrl);刷新,页面上不出现表格
用Page.RegisterStartupScript("refresh","<script>parent.top.history.go(0);</script>");刷新,就出现弹出窗口,要重新提交服务器,一直不会消失,
真郁闷,哪为高手给我解决了???下边是生成表函数和按钮执行事件。
void bind()
{
if(ViewState["begin"]==null)
{
ViewState["begin"]=0;
}
j=int.Parse(ViewState["begin"].ToString());
card.CellPadding=0;
card.CellSpacing=0;
for(int i=1;i<=j;i++)
{
TableRow tr=new TableRow();
for(int m=0;m<14;m++)
{
TableCell tc=new TableCell();
switch(m)
{
case 9:
DropDownList zhuorpin=new DropDownList();
zhuorpin.ID="d_transport_by"+i+m;
zhuorpin.Width=80;
zhuorpin.Items.Add(new ListItem("主单","0"));
zhuorpin.Items.Add(new ListItem("拼单","1"));
tc.Controls.Add(zhuorpin);
break;
case 10:
DropDownList pay_mode=new DropDownList();
pay_mode.ID="d_transport_by"+i+m;
pay_mode.Width=80;
pay_mode.Items.Add(new ListItem("现金","0"));
pay_mode.Items.Add(new ListItem("记帐","1"));
pay_mode.Items.Add(new ListItem("到付","2"));
tc.Controls.Add(pay_mode);
break; case 12:
DropDownList transport_by=new DropDownList();
transport_by.ID="d_transport_by"+i+m;
transport_by.Width=80;
transport_by.Items.Add(new ListItem("航空","0"));
transport_by.Items.Add(new ListItem("铁路","1"));
tc.Controls.Add(transport_by);
break;
default:
TextBox tb=new TextBox();
tb.ID="tb"+i+m;
tb.Width=80;
tc.Controls.Add(tb);
break;
}
tr.Cells.Add(tc);
card.Rows.Add(tr);
this.Panel1.Controls.Add(card);
}
}
} private void Button2_Click(object sender, System.EventArgs e)
{
if(ViewState["begin"]==null)
{
ViewState["begin"]=0;
}
ViewState["begin"]=int.Parse(ViewState["begin"].ToString())+1;
}
我点一下“生成一行”按钮就生成一行,void bind()必须在pageload()里边,写入数据库的时候才能得到textbox的值,这样就出问题了,按牛执行了,pageload要在下一次提交服务器的时候才执行,就是生成行不能马上出来,用Response.Redirect(HttpContext.Current.Request.RawUrl);刷新,页面上不出现表格
用Page.RegisterStartupScript("refresh","<script>parent.top.history.go(0);</script>");刷新,就出现弹出窗口,要重新提交服务器,一直不会消失,
真郁闷,哪为高手给我解决了???下边是生成表函数和按钮执行事件。
void bind()
{
if(ViewState["begin"]==null)
{
ViewState["begin"]=0;
}
j=int.Parse(ViewState["begin"].ToString());
card.CellPadding=0;
card.CellSpacing=0;
for(int i=1;i<=j;i++)
{
TableRow tr=new TableRow();
for(int m=0;m<14;m++)
{
TableCell tc=new TableCell();
switch(m)
{
case 9:
DropDownList zhuorpin=new DropDownList();
zhuorpin.ID="d_transport_by"+i+m;
zhuorpin.Width=80;
zhuorpin.Items.Add(new ListItem("主单","0"));
zhuorpin.Items.Add(new ListItem("拼单","1"));
tc.Controls.Add(zhuorpin);
break;
case 10:
DropDownList pay_mode=new DropDownList();
pay_mode.ID="d_transport_by"+i+m;
pay_mode.Width=80;
pay_mode.Items.Add(new ListItem("现金","0"));
pay_mode.Items.Add(new ListItem("记帐","1"));
pay_mode.Items.Add(new ListItem("到付","2"));
tc.Controls.Add(pay_mode);
break; case 12:
DropDownList transport_by=new DropDownList();
transport_by.ID="d_transport_by"+i+m;
transport_by.Width=80;
transport_by.Items.Add(new ListItem("航空","0"));
transport_by.Items.Add(new ListItem("铁路","1"));
tc.Controls.Add(transport_by);
break;
default:
TextBox tb=new TextBox();
tb.ID="tb"+i+m;
tb.Width=80;
tc.Controls.Add(tb);
break;
}
tr.Cells.Add(tc);
card.Rows.Add(tr);
this.Panel1.Controls.Add(card);
}
}
} private void Button2_Click(object sender, System.EventArgs e)
{
if(ViewState["begin"]==null)
{
ViewState["begin"]=0;
}
ViewState["begin"]=int.Parse(ViewState["begin"].ToString())+1;
}
解决方案 »
- 希望高手看看:选项卡关于js及后台c#
- 文本框能否自动循环查询数据库?
- 如何将JS转换成字符串
- 网页保存excel文件时弹出一个对话框让选择保存还是打开,能不能disable掉其中的保存按钮?
- eWebEditor2.8编辑器插入上传图片时不能上传到目录中?这是为什么?
- 关于一段图片轮番在.net下显示不出来的问题
- 奇怪,为什么我在Page_Load里的代码不执行呢?
- 急求机票预订系统的脚本~~谢谢
- 大虾们说说ASP转ASP。NET的理由, 一定用ASP。NET吗? 不是用ASP也一样做到?
- 求助:The page was not displayed because the request entity is too large.
- nt authority\network用户登录失败
- 急!烦!!!模态窗体中访问对象问题?
http://www.keepbalance.net/silentwins/mydesign/login.aspx
随便注册个账号,然后点发表论文,在下面有一串增加参与作者和减少参与作者按钮,你看看是不是跟你的情况差不多?
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace MyDesign
{
/// <summary>
/// Add1 的摘要说明。
/// </summary>
public class Add1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtAuthor1;
protected System.Web.UI.WebControls.PlaceHolder plhAuthorFields;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button btnSubmit;
protected System.Web.UI.WebControls.Button btnDel;
protected System.Web.UI.WebControls.TextBox txtName;
protected System.Web.UI.WebControls.DropDownList dropNo;
protected System.Web.UI.WebControls.DropDownList dropDepartment;
protected System.Web.UI.WebControls.TextBox txtRe;
protected System.Web.UI.WebControls.Label test;
protected System.Web.UI.WebControls.TextBox txtMagzine;
private SqlConnection cn = new SqlConnection();
protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;
protected System.Web.UI.WebControls.Button btnReset;
static int intLID;
public void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if (! IsPostBack )
{
ViewState[ "AuthorFieldCount" ] = 1;
test.Text="1";
}
else
for ( int intCounter = 2 ; intCounter <= (int)ViewState ["AuthorFieldCount"]; intCounter++)
AddAuthorField( intCounter.ToString() );
} //增加作者数目
public void AddAuthorFieldCount( object s, EventArgs e )
{
ViewState[ "AuthorFieldCount" ] = (int)ViewState[ "AuthorFieldCount" ] + 1;
// for ( int intCounter = 2 ; intCounter <= (int)ViewState ["AuthorFieldCount"]; intCounter++)
AddAuthorField( ViewState[ "AuthorFieldCount" ].ToString() );
} //增加输入作者的TextBox
public void AddAuthorField( string strFieldNum )
{
LiteralControl litLabel;
TextBox txtTextBox;
test.Text=strFieldNum.ToString(); //增加标签
litLabel = new LiteralControl();
//litLabel.ID = "litLabel" + strFieldNum;
litLabel.Text = "<p><b>作者学号 " + strFieldNum + ":</b> ";
plhAuthorFields.Controls.Add( litLabel ); //增加TextBox
txtTextBox = new TextBox();
txtTextBox.ID = "txtAuthor" + strFieldNum;
plhAuthorFields.Controls.Add( txtTextBox );
} //减少作者数目
public void DelAuthorFieldCount( object s ,EventArgs e)
{
if ((int)ViewState[ "AuthorFieldCount" ] == 1)
{
Page.RegisterClientScriptBlock("error","<script language='Javascript'>alert('再删就没有作者啦!')</script>");
return;
}
else
{
ViewState[ "AuthorFieldCount" ]=(int)ViewState[ "AuthorFieldCount" ] - 1;
DelAuthorField( (int)ViewState[ "AuthorFieldCount" ] );
//for ( int intCounter = 2 ; intCounter <= (int)ViewState ["AuthorFieldCount"]; intCounter++)
// AddAuthorField(intCounter.ToString() );
//本来intCounter为ViewState["AuthorFieldCount'],没有循环,启用Page_load的循环,因Page_Load先于空间事件,故页面多显示一个控件
}
}
//减少输入作者用的TextBox
public void DelAuthorField( int strFieldNum)
{
test.Text=strFieldNum.ToString();
//foreach(Control ctr in plhAuthorFields.Controls)
//{
// if(ctr.ID=="txtBox"+(strFieldNum))
// {
// plhAuthorFields.Controls.Remove(ctr);
// }
// for(int i=strFieldNum - 2;i<=strFieldNum;i++)
// { // foreach(Control c in plhAuthorFields.Controls)
// {
// if(c.ID=="litLabel" + i.ToString())
// { test.Text=c.ID;
//原来就这么两行代码,弄得我心力交瘁啊,所有注释的代码都因此而起-_-!!!
//一用Remove()就出错,参数明明都是对的,用RemoveAt()就好了
plhAuthorFields.Controls.RemoveAt( strFieldNum*2 + 1);
plhAuthorFields.Controls.RemoveAt( strFieldNum*2);
//this.Response.Write("<script>window.document.reload();</script>");
//ViewState[ "AuthorFieldCount" ]=(int)ViewState[ "AuthorFieldCount" ] - 1;
// }
// }
// }
// } }
//提交事件
public void btnSubmit_Click( object s, EventArgs e )
{
try
{
//防止重复提交
btnSubmit.Enabled=false;
SqlCommand cmdInsert1;
SqlParameter paraReturnValue;
//intLID = 1; //for ( int intCounter = 2 ; intCounter <= (int)ViewState ["AuthorFieldCount"]; intCounter++)
// AddAuthorField( intCounter.ToString() );
cn.ConnectionString = (@"Server=(local);uid=silentwins;pwd=1061sdj;database=Killua") ;
cn.Open(); cmdInsert1 = new SqlCommand("InsertLW",cn);
cmdInsert1.CommandType = CommandType.StoredProcedure;
cmdInsert1.Parameters.Add("@Name",txtName.Text);
cmdInsert1.Parameters.Add("@Department",dropDepartment.SelectedItem.Text);
cmdInsert1.Parameters.Add("@magzine",txtMagzine.Text);
cmdInsert1.Parameters.Add("@No",dropNo.SelectedItem.Value);
cmdInsert1.Parameters.Add("@Re",txtRe.Text); paraReturnValue = cmdInsert1.Parameters.Add("@LID",SqlDbType.Int);
paraReturnValue.Direction = ParameterDirection.Output;
cmdInsert1.ExecuteNonQuery();
intLID = Convert.ToInt32(cmdInsert1.Parameters["@LID"].Value); //对TextBox的数据进行插入
foreach (Control c in plhAuthorFields.Controls)
{
if(c.GetType() == typeof(TextBox))
{
TextBox tb = (TextBox)c;
test.Text = tb.Text; SqlCommand cmdInsert2;
cmdInsert2 = new SqlCommand(" Insert 论文发表(序列号,学号) Values (@LID,@ID)",cn);
cmdInsert2.Parameters.Add("@LID",intLID);
cmdInsert2.Parameters.Add("@ID",tb.Text);
cmdInsert2.ExecuteNonQuery();
} }
cn.Close();
}
catch(Exception exObj)
{
Response.Redirect("Error.aspx");
} //跳转到提示增加数据成功的页面,String.Format为静态格式化字符串方法
Response.Redirect(String.Format( "Add1Succeed.aspx?lid={0}",intLID));
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion //重新设置事件
private void btnReset_Click(object sender, System.EventArgs e)
{
txtName.Text = "";
txtMagzine.Text = "";
txtRe.Text = "";
dropDepartment.SelectedIndex = 0;
dropNo.SelectedIndex = 0;
foreach (Control c in plhAuthorFields.Controls)
{
if(c.GetType() == typeof(TextBox))
{
TextBox tb = (TextBox)c;
tb.Text = "";
}
}
}
}
}