拖了一个GridView到页面,当没有数据时在EmptyDataTemplate中显示添加的detailsview,但EmptyDataTemplate中不像FooterTemplate可以直接
TextBox txtbox=(TextBox) GridView1.FooterRow.FindControl("txtbox") ;
来获取detalisview中的控件。

研究了一翻,得到解决方法,这里贴出来给有需要的朋友。
在前台定义detailsview的OnItemInserted=DetailsView1_iteminserted OnItemInserting=DetaisView1_iteminserting 事件,并设置DefaultMode="Insert"
具体代码如下
:protected void DetaisView1_iteminserting(object sender, DetailsViewInsertEventArgs e)
    {
        Table GridViewTable = ((Table)gvartSpec.Controls[0]);
        DetailsView DetailsView1 = ((DetailsView)GridViewTable.Rows[0].FindControl("DetailsView1"));
        TextBox codeStyletxtbox = (TextBox)DetailsView1.FindControl("codeStyleinserttxtbox");
     }
插入之后,再在DetailsView1_iteminserted事件中重新绑定数据
 protected void DetailsView1_iteminserted(object sender, DetailsViewInsertedEventArgs e)
    {
        BindGrid();
    }