我创建了一个formview,如何访问在其insertitemtemplate里的文本框呀?

解决方案 »

  1.   

    protected void FormView1_ItemCreated(object sender, EventArgs e)   
    {        
       TextBox txt;       
       switch (FormView1.CurrentMode)       
       {            
           case FormViewMode.Insert: 
                  txt= ((TextBox)FormView1.Row.FindControl("TextBox1"));  
                  break;  
          }   
    }
     
            
      

  2.   


    我添加了一个服务器控件的按钮,想点击这个按钮之后为insertitemtemplate里的Textbox附初始值,偶刚开始学习asp.net不久,最好能把具体的一个代码实例写一下。
    上面的实例我把txt声明成全局的,然后在按钮单击事件里面给她的text属性附值报错,txt为空,但是在ItemCreated事件里确实是找到这个textbox了~~偶很苦恼为什么会这样~~~~
      

  3.   

    id写的没问题,在FormView1_ItemCreated事件里能够找到这个textbox,但是把它移到button1_Click事件里面就不行了,返回的是null
      

  4.   

    我也试过把它赋值给一个textbox的全局变量,然后在click事件里给这个全局变量的text属性赋值,但是它的值仍然是null
      

  5.   

    上面加了判断如果是CurrentMode就 txt= ((TextBox)FormView1.Row.FindControl("TextBox1")); 
    在Button里判断了吗?只有在CurrentMode模式下才能找TextBox
      

  6.   

    判断一下可以了,在Insert状态下可以找到这个文本框了,在Edit状态下如何找到EditItemTamplate里面的文本框呀?我按照上面的例子改成:
    TextBox txt;      
      switch (FormView1.CurrentMode)      
      {            
          case FormViewMode.Edit: 
                  txt= ((TextBox)FormView1.Row.FindControl("TextBox1"));
                  break;  
          }  
    却找不到~
      

  7.   

    断点下,看看,为什么找不到控件,监视下FormView1的Dom
      

  8.   

    截取断点后发现RowState还是Insert,但是formview的CurrentMode已经改成了Edit了,如何改变RowState的状态?
      

  9.   

    这么说吧,编辑状态下,TextBox是存在的,默认状态下是Label ,当点击编辑,页码回发到后台执行Edit事件,此时意思是得到当前编辑的RowIndex==this.FormView的默认行,此事件执行完毕自动跳到FormView1_ItemUpdate事件里去执行,你只能在此事件里写刚才的方法
      

  10.   


      protected void FormView1_ItemEditing(object sender, FormView1EditEventArgs e) 
        { 
            FormView1.EditIndex = e.NewEditIndex; 
            BindData(); 
        } 
         protected void FormView1_ItemUpdating(object sender, FormView1EventArgs e) 
        {//此处
    TextBox txt;      
      switch (FormView1.CurrentMode)      
      {            
          case FormViewMode.Edit: 
                  txt= ((TextBox)FormView1.Row.FindControl("TextBox1")); 
                  break;  
          }      } 
      

  11.   

    我找过了,FormView1没有ItemEditing这个时间呀?