asp.net下
DataGrid 点编辑后,怎么让这行的第一个文本框获得焦点?
急, 解决200分相送!!!!

解决方案 »

  1.   

    我在DataGrid1_ItemDataBound里写了:
    m_1=(TextBox)e.Item.Cells[2].Controls[0];
    m_1.Width=Unit.Pixel(70);
    //m_1.TabIndex=1;
    //Response.Write("<script language='javascript'>javascript:document.Form1.DataGrid1.m_1.focus();</script>");
    //Page.RegisterClientScriptBlock("getfocus","<script language=javascript>function getfocus(){"+ m_1.ClientID +".focus();  };</script>");
    上面两个方法好像都不可以,说没有这个控件.
    谁帮我看哪里写错了,谢谢了
      

  2.   

    public void SetFocus(System.Web.UI.Control ctrl)
    {
           string s="<SCRIPT language=javascript>document.getElementById('" + ctrl.ID + "').focus() </SCRIPT>";
           RegisterStartupScript("focus",s);
    }
      

  3.   

    我现在
    m_1=(TextBox)e.Item.Cells[2].Controls[0];
    是不是
    SetFocus(m_1);
    写在DATAGRID的哪个事件里
    就可以了呢?
      

  4.   

    写在DataGrid的EditCommand里或者是“DataGrid 点编辑后”所触发的那个事件里
    使用RegisterStartupScript 注册脚本,因为RegisterClientScript脚本注册时页面控件对象还没生成
    使用你上面的那段程序就行了
    m_1=(TextBox)e.Item.Cells[2].Controls[0];
    Page.RegisterStartupScript ("getfocus",
      "<script language=javascript>"+ m_1.ClientID +".focus();</script>");
      

  5.   

    写在DataGrid的EditCommand
    执行m_1=(TextBox)e.Item.Cells[2].Controls[0];
    时不报错,
    private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
    DataGridLoad(); TextBox m_1;
    m_1=(TextBox)e.Item.Cells[3].Controls[0];
    Page.RegisterStartupScript ("getfocus",
    "<script language=javascript>"+ m_1.ClientID +".focus();</script>");
    DataGridLoad();
                 }
      

  6.   

    System.Web.UI.WebControls.DataGridCommandEventArgs e这个 e 只能得到 Label ,没有 TextBox
      

  7.   

    okwinds(梦无忧) 
    用this.focus()这个怎么用, 能说详细点吗?
      

  8.   

    System.Web.UI.WebControls.DataGridCommandEventArgs e
    这个 e 只能得到 Label ,没有 TextBox
    --------------
    可能是因为EditCommand事件触发时还没有重新生成datagrid,你可以这样做:
    public class WebForm1 : System.Web.UI.Page
    {
      private DatagridItem item;//用来存放点击的时那一行的编辑事件 
      private void DataGrid1_EditCommand(object source,
          System.Web.UI.WebControls.DataGridCommandEventArgs e)
      {
          item=e.Item;//保存触发事件的那一行
          DataGridLoad();
       }
       protected override void CreateChildControls()//重载CreateChildControls函数
       {
         base.CreateChildControls ();
         TextBox m_1;
         m_1=(TextBox)item.Cells[3].Controls[0];
         Page.RegisterStartupScript ("getfocus",
    "<script language=javascript>"+ m_1.ClientID +".focus();</script>");     
         
       }  }
      

  9.   

    Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
       
       Source Error: 
       
       
       Line 102: base.CreateChildControls ();
       Line 103: TextBox m_1=new TextBox();
       Line 104: m_1=(TextBox)item.Cells[3].Controls[0];
       Line 105: Page.RegisterStartupScript ("getfocus",
       Source File:  testgrid.aspx.cs    Line: 104 
      

  10.   

    试试:
    m_1=(TextBox)item.Cells[3].Controls[1];
    加断点,在命令窗口输入:(TextBox)item.Cells[3].Controls.Count 看看共有几个Control,看看每个Control的类型,在强制类型转换。