从GridView取出ID值到TextBox,再添加到数据库的有关问题

从GridView取出ID值到TextBox,再添加到数据库的问题
我用GridView读取了一个表 
定义了 <ItemTemplate>
  <asp:Button ID="Button4" runat="server" Text="选择" CommandName="select" CommandArgument='<%# Eval("xmjdid") %>'/>
  </ItemTemplate>

protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
  {
  // TextBox1.Text = GridView2.DataKeys[e.].Value.ToString();
  if (e.CommandName=="select")
  {
  GridViewRow drv=((GridViewRow)((Button)(e.CommandSource)).Parent.Parent);
  TextBox1.Text=GridView2.DataKeys[drv.RowIndex].Value.ToString();


  }

  }

这个点击没有问题 TextBox1 有 xmjdid 的值 

然后在BUTTON事件里定义
protected void Button1_Click(object sender, EventArgs e)
  {
  //添加进度到xxch_xmjdjd
  string id1 = TextBox1.Text; //编号
string sql2 = "insert into [xxch_xmjdjd] (xmjdid) values('" + id1 + "')";
  bc.ExecSQL(sql2);
//bc.ExecSQL(sql2)是定义在App_Code 里写好了的BaseClass.cs 可以执行SQL语句 
//在事情前已定义好BaseClass bc = new BaseClass();

}

现在的问题是 自己在TextBox1 任意字符都能成功写到数据库里,而点了Button4 ,把GridView2的xmjdid取值到TextBox1 后,再点 Button1就没任何反应。。
郁闷中。。。。。

------解决方案--------------------
如果你的TextBox1仅仅是为了显示id你可以设为enable 这样你就不能编辑他了,每次插入数据库前只要判断他是为空就行吧,至于你说的Button4 不知道是啥