我在html部分只放一个datagrid的标记,至于有几个列,我都要后台动态控制  在 DataGrid 控件中以编程方式创建模板。****第一个问题****  
 我把   <asp:EditCommandColumn EditText="编辑" UpdateText="更新" CancelText="取消" ItemStyle-Width="140" />  的标记转化为
   
            EditCommandColumn en1=new EditCommandColumn();
            en1.UpdateText="更新";
en1.CancelText="取消";
en1.ItemStyle.Width=140;
            DataGrid1.Columns.Add(en1);
  可是居然浏览的时候无这一列。晕
****第二个问题****
     <asp:TemplateColumn ItemStyle-Width="120">
       <HeaderTemplate>Stno</HeaderTemplate>
       <ItemTemplate><%# DataBinder.Eval(Container.DataItem, "Stno") %></ItemTemplate>
      <EditItemTemplate>
<asp:TextBox ID="txtStno" Text='<%# DataBinder.Eval(Container.DataItem, "Stno") %>' Runat=server Width=100%/>
</EditItemTemplate>
</asp:TemplateColumn>其中的"Stno"是数据库字段。第一是要创建实现 System.Web.UI 命名空间的 ITemplate 接口的模板类,这是帮助稳当里的一个例子
public class DataGridTemplate : ITemplate
{
ListItemType templateType;
string columnName;
   
public DataGridTemplate(ListItemType type, string colname)
{
templateType = type;
columnName = colname;
} public void InstantiateIn(System.Web.UI.Control container)
{
Literal lc = new Literal();
switch(templateType)
{
case ListItemType.Header:
lc.Text = "<B>" + columnName + "</B>";
container.Controls.Add(lc);
break;
case ListItemType.Item:
lc.Text = "Item " + columnName;
container.Controls.Add(lc);
break;
case ListItemType.EditItem:
TextBox tb = new TextBox();
tb.Text = "";
container.Controls.Add(tb);
break;
case ListItemType.Footer:
lc.Text = "<I>" + columnName + "</I>";
container.Controls.Add(lc);
break;
}
}
}可是InstantiateIn函数是有问题的,这样不能达到我用datagrid达到delete 和 update的功能。
关键大家看,InstantiateIn函数中的第二和第三个分支我不会,如何表示数据库字段。请高手给提示。