aspx.cs:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!this.Page .IsPostBack )
{
                 Bind();
}
} private void Bind()
        {
   
            DataTable dt=new DataTable ();
            DataColumn dc=new DataColumn ("ID",System.Type.GetType("System.Int32")); 
            DataColumn dc1=new DataColumn ("Name",System.Type .GetType ("System.String"));
            dt.Columns .Add (dc);
            dt.Columns .Add (dc1);
            DataRow row=dt.NewRow();
            row[0]=1;
            row[1]="aa";
            dt.Rows .Add (row);
            DataRow row1=dt.NewRow();
            row1[0]=2;
            row1[1]="ab";
            dt.Rows .Add (row1);
   
  
            this.DataGrid1 .DataSource =dt;
            this.DataGrid1 .DataBind ();
            Session["table"]=dt;
   
        }        private void Button1_Click(object sender, System.EventArgs e)
        {
            DataTable dt=(DataTable)Session["table"];
            DataRow row=dt.NewRow ();
            dt.Rows .Add(row);
            this.DataGrid1 .DataSource =dt; 
            this.DataGrid1 .DataBind ();
            Session["table"]=dt; 
        }
aspx:<asp:DataGrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 272px; POSITION: absolute; TOP: 72px"
runat="server" AutoGenerateColumns="False">
<Columns>
<asp:TemplateColumn HeaderText="ID">
<ItemTemplate>
<asp:TextBox id="TextBox1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ID") %>'>
</asp:TextBox>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="Name" HeaderText="Name"></asp:BoundColumn>
</Columns>
</asp:DataGrid>我想要的是我每次按button,DataGrid新增一行后,鼠标的焦点怎么可以在那个新增的空行的TextBox上呢?

解决方案 »

  1.   

    得到TextBox的客户端ClientID然后用js根据ClientID加个焦点就可以了
      

  2.   

    关键是每个ClientID不同!我想过用Js做的
      

  3.   

    DataGrid里面的TextBox在Html源文件里的ID都是自动生成,没有规律的
      

  4.   

    你可以在DataGrid的ItemDataBound事件里获取ClientID阿!
      

  5.   

    好象那个获得还是TextBox1吧,又没办法获得源文件那个ID
      

  6.   

    拜托,你做过没有,没做过就不要下获取不到ClientID的结论!private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    DataTable dt = (DataTable)this.DataGrid1.DataSource;
    if(e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
    {
    i++;
    if (i == dt.Rows.Count)
    {
    TextBox txt = (TextBox)e.Item.FindControl("TextBox1"); Response.Write(txt.ClientID.ToString());
    }
    }

    }
      

  7.   

    但不知道那个i在哪里声明了,编译通不过了.呵呵,我没想到用TextBox.ClientID属性,一直只想着
    TextBox.ID
      

  8.   

    全局变量
    int i = 0;