dategrid有一个模板列特Textbox1,模板列是动态添加的,
怎样对Textbox1赋值?

解决方案 »

  1.   

    可以在ItemDataBound事件里TextBox tb = e.Item.FindControl("TextBox1") as TextBox;
    tb.Text = "abc";
      

  2.   


    我动态添加模板列是这么写的,这样写不能再为模板列赋值吗?DataRow drAdd = dtNew.NewRow();//dtNew是datatable
    dtNew.Rows.Add(drAdd);//绑定数据
    this.dgT.DataSource = dtNew.DefaultView;
    this.dgT.DataBind();
      

  3.   

    that is not 模板列, dtNew.Rows.Add adds a new record!
      

  4.   

    TextBox txt = (TextBox)e.Item.FindControl("TextBox1");
    txt.Text = "saffdsa";
      

  5.   

    常法是把DataTable数据放在一个Session变量里,或者在数据库里,重新查询
      

  6.   

    to saucer ;
    我这样的思路不知可不可以。
    1)在 Page_load 的 IsPossBack 时创建表并绑定到 DataGrid dg 上面 然后 
    ViewState["table"] = 这个新表 如:dt12)点击 添加行的按扭后
    DataTable dt_2 = (DataTable)ViewState["table"];
    然后对 dt_2 进行 
    NewRow = dt_2.NewRow()
    dt_2.Rows.Add(NewRow);
    之后重新赋值 ViewState["table"] = dt_2;
    之后绑定 dg.
    这样实现究竟可不可以?为什么 添加后对 dg 的绑定 在页面上依然无法显示在输入框输入的值
    前台代码如下:
    <asp:TemplateColumn HeaderText="Name">
    <ItemTemplate>
    <asp:TextBox ID="tbName" Text='<%# DataBinder.Eval(Container, "DataItem.dcName") %>' MaxLength="20" Runat="server" CssClass="txtINPUT">
    </asp:TextBox>
    </ItemTemplate>
    </asp:TemplateColumn>
    想问 saucer 用这个的方法到底能不能实现 楼主 需要的功能 ,谢谢。
      

  7.   

    不能用数据库,使用Session变量的方法我用过,没出来,可能使用的不对
    DataRow drAdd = dtNew.NewRow();//dtNew是datatable
    dtNew.Rows.Add(drAdd);//绑定数据
    this.dgT.DataSource = dtNew.DefaultView;
    this.dgT.DataBind();ViewState["dt"] = dtNew;//我传给了ViewState,要是你会怎样写?
    //NewRow重邦之后数据会别冲掉。
      

  8.   

    别用ViewState,DataGrid已经把一份数据放在ViewState里(虽说你也可以应此取出来,但数据类型全没了)了,再说ViewState只对当前页面的POST才有效,要是用户按什么连接的话,你的数据就没了DataTable dt = Session["MyData"] as DataTable;
    if (dt == null)
    {
      //....create dt
      dt = new DataTable();
      //...
      Session["MyData"]  = dt;
    } if (!IsPostBack)
    {
       dgT.DataSource = dt.DefaultView;
       dgT.DataBind();
    }
      

  9.   

    to saucer:您看一下,这是我刚写的主要代码,Page_Load 和 btnAddrows_Click 事件的代码
    但 依然无法实现点击添加按扭后保存已经在 TextBox 输入的值
    希望您能帮忙指点一下。谢谢。
    private void Page_Load(object sender, System.EventArgs e)
    {
    if (!Page.IsPostBack)
    {
    //如果 DataTable 不为空 则清空 
    if (dtAdd.Columns.Count <= 0)
    {
    DataColumn dcName = new DataColumn();
    dcName.ColumnName = "dcName";
    dcName.DefaultValue = ""; DataColumn dcSex = new DataColumn();
    dcSex.ColumnName = "dcSex";
    DataColumn dcAge = new DataColumn();
    dcAge.ColumnName = "dcAge";
    dcAge.DefaultValue = "100"; //添加列 
    dtAdd.Columns.Add(dcName);
    dtAdd.Columns.Add(dcSex);
    dtAdd.Columns.Add(dcAge);
    }
    Session["dt"] = dtAdd;
    this.dgT.DataSource = ((DataTable)Session["dt"]).DefaultView;
    this.dgT.DataBind();
    }
    } btnAddrows_Click 事件
    private void btnAddrows_Click(object sender, System.EventArgs e)
    {
    //开始添加行 DataTable dtNew = (DataTable)Session["dt"]; if (dtNew.Rows.Count > 7)
    {
    ShowMess("请勿一次性添加 8 行以上!");
    return;
    } DataRow drAdd = dtNew.NewRow(); dtNew.Rows.Add(drAdd);
    Session["dt"] = dtNew; this.dgT.DataSource = dtNew;
    this.dgT.DataBind();
    }
      

  10.   

    不行啊老大,看一下代码
    page_lode
             DataTable dt = (DataTable)Session["MyData"];
    if (dt == null)
    {
    dt = new DataTable();
    Session["MyData"]  = dt;

    if (!Page.IsPostBack)
    {
    this.dgT.DataSource = dt;
    this.dgT.DataBind();
    }button_click
             DataTable dtNew = (DataTable)Session["MyData"]; DataRow drAdd = dtNew.NewRow();//NewRow();
    dtNew.Rows.Add(drAdd); //绑定数据
    this.dgT.DataSource = dtNew.DefaultView;
    this.dgT.DataBind();