net动态控件按保存时取值问题

heli_1005 2013-07-23 02:24:07
编辑功能: net 在后台动态添加控件,然后把给控件赋值,呈现到界面,然后修改控件的值,按保存。这个时候,得不到控件修改后的值,总是最开始赋值时候的值。这要怎么做呢? 动态控件的id 可以得到,查看源文件时,id的值都是最初赋值时候的值。 为什么点保存的时候,得不到修改后的值呢?


TextBox txtXuhao { get; set; }
DropDownList dptea { get; set; }
TextBox txtBegin { get; set; }
TextBox txtEnd { get; set; }
TextBox txtCode { get; set; }


//动态生成控件
public void CreateControl()
{
if (ViewState["CreateControl"] == null) return;
int claId = Convert.ToInt32(Request.QueryString["claID"]);
DataSet dsDeta = tb.ShowClassDetail(claId);

TableRow row1 = new TableRow();

TableCell cell1 = new TableCell();
Label la = new Label();
la.Text = "班次序号";
la.Width = 82;

Label la2 = new Label();
la2.Text = "老师";
la2.Width = 125;

Label la3 = new Label();
la3.Text = "上课开始时间";
la3.Width = 210;

Label la4 = new Label();
la4.Text = "下课结束时间";
la4.Width = 210;

Label la5 = new Label();
la5.Text = "课程代码";
la5.Width = 200;

cell1.Controls.Add(la);
cell1.Controls.Add(la2);
cell1.Controls.Add(la3);
cell1.Controls.Add(la4);
cell1.Controls.Add(la5);

row1.Cells.Add(cell1);
HolderTable.Rows.Add(row1);

for (int i = 0; i < dsDeta.Tables[0].Rows.Count; i++)
{
TableRow row = new TableRow();

TableCell cell = new TableCell();
txtXuhao = new TextBox();
txtXuhao.Width = 78;
txtXuhao.ID = "txtXuhao" + i;

dptea = new DropDownList();
dptea.ID = "dptea" + i;
dptea.Width = 120;
dptea.DataSource = teab.showTeacherProFile();
dptea.DataTextField = "Teacher_Name";
dptea.DataValueField = "Teacher_ID";
dptea.DataBind();

txtBegin = new TextBox();
txtBegin.ID = "txtBegin" + i;
txtBegin.Width = 200;

txtEnd = new TextBox();
txtEnd.ID = "txtEnd" + i;
txtEnd.Width = 200;

txtCode = new TextBox();
txtCode.ID = "txtCode" + i;
txtCode.Width = 180;

cell.Controls.Add(txtXuhao);
cell.Controls.Add(dptea);
cell.Controls.Add(txtBegin);
cell.Controls.Add(txtEnd);
cell.Controls.Add(txtCode);

row.Cells.Add(cell);
HolderTable.Rows.Add(row);

txtXuhao.Text = dsDeta.Tables[0].Rows[i]["Class_Sequence"].ToString();
txtBegin.Text = dsDeta.Tables[0].Rows[i]["Class_Time_Begin"].ToString();
txtEnd.Text = dsDeta.Tables[0].Rows[i]["Class_Time_End"].ToString();
txtCode.Text = dsDeta.Tables[0].Rows[i]["Course_Code"].ToString();

}
}



static TextBox txXuhao;
static DropDownList dpte;
static TextBox txtBe;
static TextBox txten;
static TextBox txtco;

public void save()
{
CreateControl();
for (int i = 0; i < dsDeta.Tables[0].Rows.Count; i++)
{
txXuhao = this.form1.FindControl("txtXuhao"+i) as TextBox;
int a =Convert.ToInt32(txXuhao.Text.ToString());

dpte = this.form1.FindControl("dptea" + i) as DropDownList;
int b =Convert.ToInt32(dpte.SelectedValue);

txtBe = this.form1.FindControl("txtBegin"+i) as TextBox;
DateTime c = Convert.ToDateTime(txtBe.Text);

txten = this.form1.FindControl("txtEnd" + i) as TextBox;
DateTime d = Convert.ToDateTime(txten.Text);

txtco = this.form1.FindControl("txtCode" + i) as TextBox;
string e = txtco.Text;
}
}
...全文
92 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztszhq 2013-07-23
  • 打赏
  • 举报
回复
引用 3 楼 heli_1005 的回复:
[quote=引用 2 楼 u011096386 的回复:] 加载 数据的时候 有加 if(!IsPostBack) ?
我前面是这样写的,有问题,回发了,是吗?要怎么改呢[/quote] public void save() { CreateControl(); save方法 还调用 CreateControl?
heli_1005 2013-07-23
  • 打赏
  • 举报
回复
引用 2 楼 u011096386 的回复:
加载 数据的时候 有加 if(!IsPostBack) ?
我前面是这样写的,有问题,回发了,是吗?要怎么改呢
ztszhq 2013-07-23
  • 打赏
  • 举报
回复
加载 数据的时候 有加 if(!IsPostBack) ?
heli_1005 2013-07-23
  • 打赏
  • 举报
回复

if(!Ispostback)
{
 if (ViewState["CreateControl"] == null)
        {
            ViewState["CreateControl"] = true;
            CreateControl();
        }
}

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧