我通过placeholder控件动态产生textbox控件,产生控件部分代码如下:
TextBox txttextbox = new TextBox();
txttextbox.ID="txtproduct"+strfieldnum;
PlaceHolder1.Controls.Add(txttextbox);
页面能够正常根据要求动态产生textbox控件,处理的时候我需要把动态产生的textbox控件的内容插入数据库,部分代码如下:
循环i,是判断动态产生了多少个textbox控件,Convert.ToInt32(tt.Text.Trim())这个是动态产生textbox控件的总数;
for(i=1;i<=(Convert.ToInt32(tt.Text.Trim()));i++)
{
chanshengneibuid();//这个函数是动态产生一个id号的;
string strinsert2;
strinsert2 = "insert into moban(mobanid,neibuid,mobanname,xiang)values(@mobanid,@neibuid,@mobanname,@xiang)";
SqlCommand cmdinsert2 = new SqlCommand(strinsert,myconnect);
cmdinsert2.Parameters.Add("@mobanid",mobanid.Trim());
cmdinsert2.Parameters.Add("@neibuid",nei.Text.Trim());
cmdinsert2.Parameters.Add("@mobanname",mobann.Text.Trim()); //问题出在这里,textbox控件的内容不知道怎么赋值给@xiang变量,就是不知道该怎么取得textbox控件的id;
cmdinsert2.Parameters.Add("@xiang",("txtproduct"+i).Text.Trim());
cmdinsert2.Connection.Open();
cmdinsert2.ExecuteNonQuery();
cmdinsert2.Connection.Close();
}
TextBox txttextbox = new TextBox();
txttextbox.ID="txtproduct"+strfieldnum;
PlaceHolder1.Controls.Add(txttextbox);
页面能够正常根据要求动态产生textbox控件,处理的时候我需要把动态产生的textbox控件的内容插入数据库,部分代码如下:
循环i,是判断动态产生了多少个textbox控件,Convert.ToInt32(tt.Text.Trim())这个是动态产生textbox控件的总数;
for(i=1;i<=(Convert.ToInt32(tt.Text.Trim()));i++)
{
chanshengneibuid();//这个函数是动态产生一个id号的;
string strinsert2;
strinsert2 = "insert into moban(mobanid,neibuid,mobanname,xiang)values(@mobanid,@neibuid,@mobanname,@xiang)";
SqlCommand cmdinsert2 = new SqlCommand(strinsert,myconnect);
cmdinsert2.Parameters.Add("@mobanid",mobanid.Trim());
cmdinsert2.Parameters.Add("@neibuid",nei.Text.Trim());
cmdinsert2.Parameters.Add("@mobanname",mobann.Text.Trim()); //问题出在这里,textbox控件的内容不知道怎么赋值给@xiang变量,就是不知道该怎么取得textbox控件的id;
cmdinsert2.Parameters.Add("@xiang",("txtproduct"+i).Text.Trim());
cmdinsert2.Connection.Open();
cmdinsert2.ExecuteNonQuery();
cmdinsert2.Connection.Close();
}
解决方案 »
- droplist数据太多 转换这个
- connectionstrings连接数据库方法求救!
- ASP.NET交流
- 5天问题未能解决,继续:1000分求获取oracle数据乱码问题,顶者有分,已结500分
- 使用 VS.NET 2005 真是窝火——在“设计”视图中无法选择页面,也就不能自动生成页面事件代码
- 不知哪里出了问题,帮帮忙啊,高手.....
- 请问:M$的TreeView Webcontrol的htc里为何用div而不是Table来实现树?
- 关于DropDownList控件的问题 急~~~~~~~~~~~~
- 抓取Excel 列数据的时候,为何抓的数据不对
- 用form认证时,if登陆成功后执行什么语句??
- 小生的毕业设计是基于web services的教学网站,可我现在只会ASP和VB,该怎么入手啊!!新手问路,请大侠留步!!
- 跨语言的安全共享问题,大家讨论一下
请问这一句就是取得textbox的id吗?
===========================================if (!IsPostBack)
{
//动态产生或装载控件
//也许需要连接控件事件处理函数
//加到父控件的Controls
}里生成或装载了动态控件。当控件在客户端触发,postback到服务器端时,IsPostBack==true,这些控件没有被重新生成,怎么能触发事件?所以答案是,当你需要动态生成或装载控件时,应该在if (!IsPostBack)之外做。我问为什么想在if (!IsPostBack)之内做呢?回答是想只生成一次,跟在ASPX页面里一样<form id="form1" runat=server>
<asp:Button id="Button1" runat="server" Text="Button1" OnClick="Button_Click"/>#%&%#&%^#&,你怎么会认为这个控件只生成一次呢?这些玩意也不是魔术,想生成一个Button对象,你需要用Button btn = new Button();需要触发它的Click事件,你需要用btn.Click += new EventHandler(YourHandler);即使象包含<asp:Button id="Button1" runat="server" Text="Button1" OnClick="Button_Click"/>的页面,它也是被转化成C#或VB文件,编译成assembly,然后再被执行的啊不信?加一个页面,TestControls.aspx:<%@ Page Debug="true" %>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.SqlClient"%><form id="form1" runat=server>
<asp:Button id="Button1" runat="server" Text="Button1" OnClick="Button_Click"/>
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="false" GridLines="Both">
<Columns>
<asp:TemplateColumn HeaderText="Name">
<ItemTemplate><%# DataBinder.Eval(Container.DataItem,"Name")%></ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
<script language="C#" runat="server">
void Button_Click(Object sender, EventArgs e)
{
Button btn = (Button)sender;
Response.Write(btn.Text + " is clicked<BR>");
}void Page_Load(Object sender, EventArgs e)
{
Button btn = new Button();
btn.ID = "Button2";
btn.Text = "Button2";
btn.Click += new EventHandler(Button_Click);
form1.Controls.Add(btn);
if (!IsPostBack)
{
SqlDataAdapter da = new SqlDataAdapter("select Name=au_fname + ' ' + au_lname from authors", "server=localhost;database=pubs;uid=sa;pwd=;");
DataTable dt = new DataTable();
da.Fill(dt);
DataGrid1.DataSource = dt.DefaultView;
DataGrid1.DataBind();
}
//}//这是故意的</script>把最后一个“}”注释掉,然后在浏览器里向你的服务器调用TestControls.aspx
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
int intcounter;
if(!IsPostBack)
{
ViewState["productfieldcount"]=1;
}
//if(ViewState["productfieldcount"]>1)
//{
if(Convert.ToInt32(ViewState["productfieldcount"])>1)
{
for(intcounter=2;intcounter<=(Convert.ToInt32(ViewState["productfieldcount"].ToString()));intcounter++)
{
addproductfield(intcounter);
}
tt.Text=ViewState["productfieldcount"].ToString();
}
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
this.sqlCommand1 = new System.Data.SqlClient.SqlCommand();
this.sqlCommand2 = new System.Data.SqlClient.SqlCommand();
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
//
// sqlConnection1
//
this.sqlConnection1.ConnectionString = "data source=172.18.58.10;initial catalog=dxxg;password=message;persist security i" +
"nfo=True;user id=message;workstation id=GAOLIN;packet size=4096";
//
// sqlCommand1
//
this.sqlCommand1.CommandText = "[Seqval]";
this.sqlCommand1.CommandType = System.Data.CommandType.StoredProcedure;
this.sqlCommand1.Connection = this.sqlConnection1;
this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(10)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.VarChar, 16));
this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@currval", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Output, false, ((System.Byte)(10)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
this.sqlCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@date", System.Data.SqlDbType.DateTime, 8, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
//
// sqlCommand2
//
this.sqlCommand2.CommandText = "[Seqval]";
this.sqlCommand2.CommandType = System.Data.CommandType.StoredProcedure;
this.sqlCommand2.Connection = this.sqlConnection1;
this.sqlCommand2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@RETURN_VALUE", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.ReturnValue, false, ((System.Byte)(10)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
this.sqlCommand2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@name", System.Data.SqlDbType.VarChar, 16));
this.sqlCommand2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@currval", System.Data.SqlDbType.Int, 4, System.Data.ParameterDirection.Output, false, ((System.Byte)(10)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
this.sqlCommand2.Parameters.Add(new System.Data.SqlClient.SqlParameter("@date", System.Data.SqlDbType.DateTime, 8, System.Data.ParameterDirection.Output, false, ((System.Byte)(0)), ((System.Byte)(0)), "", System.Data.DataRowVersion.Current, null));
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{
ViewState["productfieldcount"]=Convert.ToInt32(ViewState["productfieldcount"])+1;
addproductfield(Convert.ToInt32(ViewState["productfieldcount"]));
}
private void addproductfield(int strfieldnum)
{
//LiteralCountrol litlabel;
Label txttextlabel = new Label();
//add literal control
int strnum;
txttextlabel.ID="product"+strfieldnum;
strnum=strfieldnum+1;
//LiteralControl lilabel = new LiteralControl();
txttextlabel.Text="<p><b> 模板项 "+ strnum +":</b> ";
PlaceHolder1.Controls.Add(txttextlabel);
//add textbox control TextBox txttextbox = new TextBox();
txttextbox.ID="txtproduct"+strfieldnum;
PlaceHolder1.Controls.Add(txttextbox);
tt.Text = strfieldnum.ToString();
}
private void chanshengneibuid()
{
String neibuid="";
sqlCommand2.Parameters["@name"].Value = "neibuid";
sqlCommand2.Connection.Open();
sqlCommand2.ExecuteNonQuery();
neibuid = sqlCommand2.Parameters["@currval"].Value.ToString();
neibuid = neibuid.PadLeft(4,'0');
sqlCommand2.Connection.Close();
nei.Text = neibuid;
//test = neibuid;
}
{
SqlConnection myconnect = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
SqlDataAdapter sqlDataAdapterc = new SqlDataAdapter("select * from moban where mobanname = @mobanname ",myconnect);
DataSet dataSetc = new DataSet();
sqlDataAdapterc.SelectCommand.Parameters.Add("@mobanname", SqlDbType.Char,30).Value = mobann.Text.Trim();
sqlDataAdapterc.Fill(dataSetc,"daihao");
if (dataSetc.Tables["daihao"].Rows.Count != 0)
{
Response.Write ("<script language='javascript'>alert('对不起!该用户组名已经存在,请更换用户名重新申请!')</script>");
}
if (dataSetc.Tables["daihao"].Rows.Count == 0)
{
String mobanid="";
sqlCommand1.Parameters["@name"].Value = "mobanid";
sqlCommand1.Connection.Open();
sqlCommand1.ExecuteNonQuery();
mobanid = sqlCommand1.Parameters["@currval"].Value.ToString();
mobanid = mobanid.PadLeft(4,'0');
sqlCommand1.Connection.Close();
/*String neibuid="";
sqlCommand2.Parameters["@name"].Value = "neibuid";
sqlCommand2.Connection.Open();
sqlCommand2.ExecuteNonQuery();
neibuid = sqlCommand2.Parameters["@currval"].Value.ToString();
neibuid = mobanid.PadLeft(4,'0');
sqlCommand2.Connection.Close();*/
//string test;
chanshengneibuid();
string strinsert;
strinsert = "insert into moban(mobanid,neibuid,mobanname,xiang)values(@mobanid,@neibuid,@mobanname,@xiang)";
SqlCommand cmdinsert = new SqlCommand(strinsert,myconnect);
cmdinsert.Parameters.Add("@mobanid",mobanid.Trim());
cmdinsert.Parameters.Add("@neibuid",nei.Text.Trim());
cmdinsert.Parameters.Add("@mobanname",mobann.Text.Trim());
cmdinsert.Parameters.Add("@xiang",xiangyi.Text.Trim());
cmdinsert.Connection.Open();
cmdinsert.ExecuteNonQuery();
cmdinsert.Connection.Close();
chanshengneibuid();
string strinsert1;
strinsert1 = "insert into moban(mobanid,neibuid,mobanname,xiang)values(@mobanid,@neibuid,@mobanname,@xiang)";
SqlCommand cmdinsert1 = new SqlCommand(strinsert,myconnect);
cmdinsert1.Parameters.Add("@mobanid",mobanid.Trim());
cmdinsert1.Parameters.Add("@neibuid",nei.Text.Trim());
cmdinsert1.Parameters.Add("@mobanname",mobann.Text.Trim());
cmdinsert1.Parameters.Add("@xiang",xianger.Text.Trim());
cmdinsert1.Connection.Open();
cmdinsert1.ExecuteNonQuery();
cmdinsert1.Connection.Close();
int i;
for(i=1;i<=(Convert.ToInt32(tt.Text.Trim()));i++)
{
string ww;
ww=PlaceHolder1.FindControl("TextBoxID");
chanshengneibuid();
string strinsert2;
strinsert2 = "insert into moban(mobanid,neibuid,mobanname,xiang)values(@mobanid,@neibuid,@mobanname,@xiang)";
SqlCommand cmdinsert2 = new SqlCommand(strinsert,myconnect);
cmdinsert2.Parameters.Add("@mobanid",mobanid.Trim());
cmdinsert2.Parameters.Add("@neibuid",nei.Text.Trim());
cmdinsert2.Parameters.Add("@mobanname",mobann.Text.Trim());
cmdinsert2.Parameters.Add("@xiang",(PlaceHolder1.FindControl("TextBoxID").Text.Trim()));
cmdinsert2.Connection.Open();
cmdinsert2.ExecuteNonQuery();
cmdinsert2.Connection.Close();
}
//cmdinsert.Parameters.Add("@xiang2",xianger.Text.Trim());
/*if((Convert.ToInt32(tt.Text.Trim()))>2)
{
cmdinsert.Parameters.Add("@xiang3",txtproduct2.Text.Trim());
}
if((Convert.ToInt32(tt.Text.Trim()))>3)
{
cmdinsert.Parameters.Add("@xiang4",txtproduct3.Text.Trim());
}
if((Convert.ToInt32(tt.Text.Trim()))>4)
{
cmdinsert.Parameters.Add("@xiang5",txtproduct4.Text.Trim());
}*/
//cmdinsert.Connection.Open();
//cmdinsert.ExecuteNonQuery();
//cmdinsert.Connection.Close();
Response.Write ("<script language='javascript'>alert('添加模板成功!')</script>");
}
}
}
}
{
for(.....)
{
string str="";
Control t = PlaceHolderID.FindControl(TextBoxID);//这里TextBoxID是你前面命名的TextBox的ID,PlaceHoldeID也一样
if(t is TextBox)
{
str+=((TextBox)t).Text;
}
return str;
}
}