你需要用到DataGrid的自定义编辑模板功能,将DataGrid的AutoGenerateColumns设为false;
然后,分别指定显示时的模板和编辑时的模板。
代码片段:
<Columns>
...
<asp:TemplateColumn HeaderText="StringValue">
  <ItemTemplate>
  <asp:Label id="lblStrValue" Text='<%#DataBinder.Eval(Container.DataItem,"StringValue")%>' runat="server"/>
  </ItemTemplate>
  <EditItemTemplate>
  <asp:TextBox id="tbxStrValue" Size="10" Text='<%#DataBinder.Eval(Container.DataItem,"StringValue")%>' runat="server"/>
  </EditItemTemplate>
  </asp:TemplateColumn>
...
</Columns> 我这里,还只是自定义了一个TextBox的宽度。在些基础,你可以自由控制TextBox了。