you can define the columns ( you want to display) of DataGrid, and define columns like this:
<asp:TemplateColumn SortExpression="au_lname" HeaderText="姓">
<HeaderStyle Wrap="False" HorizontalAlign="Center"></HeaderStyle>
<ItemStyle Wrap="False"></ItemStyle>
<ItemTemplate>
<asp:Label id=Label2 Text='<%#DataBinder.Eval(Container,"DataItem.au_lname")%>' Runat="server">
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id=au_lname Width="108px" Text='<%#DataBinder.Eval(Container,"DataItem.au_lname")%>' Runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateColumn>.............
when the project run, you use databind, bind the dataset.

解决方案 »

  1.   

    DataGrid的模板的定义要在页面上自己手工定制,使用<asp:TemplateColumn控件来定义一个字段的样式,其中可以定制该字段显示和编辑时的样式。上面给你觉得那个例子就是整个的显示了一个列的模板,包括header,你也可以定制footer。
      

  2.   

    我把代码贴出来,大家看看就知道我的苦恼之处了
    ----------------------------------------------------------------
    原贴内容:
    如果你在设计时连有什么字段都不知道的话,你就必须在代码里面修改Header。
    一个方法是修改得到的DataSet的各字段的名称。
    第二个方法是直接修改每个Column的HeaderText:
    DataGrid1.Columns[0].HeaderText = "Header Text";
    DataGrid1.DataBind();
    第三个方法是在ItemDataBound中设置:
    if (e.Item.ItemType == ListItemType.Header)
    {
      e.Item.Cells[0].Text = "Header Text";
    }
    --------------------------------------
    斑竹阿,我现在知道dataset各字段的名称,只是因为是后期绑定到datagrid上的
    ,直接修改每个Column的HeaderText,我发现不行,老是报未找到索引值
    我现在想直接改掉DataSet的各字段的名称,怎么不起作用,
    我的代码如下,麻烦看看,谢谢阿Me.DataSetall1.Clear()
            myConn.SqlDataAdapterall.SelectCommand.CommandText = "SELECT  T024.project , T217.wcsl, T217.pcqty, T217.xqqty, T034.gxcode, T034.NAME, T003.goodscode, T003.GoodsName, T003.STYLE, T218.ondate, T218.qty, T218.gs, T013.wkcode, T013.WKNAME, T216.useh FROM T217 INNER JOIN T218 ON T217.pcid = T218.pcid INNER JOIN T216 ON T217.wkid = T216.wkid AND T218.ondate = T216.ondate and T218.ondate='" & Me.TextBoxdate.Text & " ' INNER JOIN T024 ON T217.projectid = T024.projectid INNER JOIN T003 ON T217.goodsid = T003.goodsid and T217.goodsid=" & dropwl.SelectedItem.Value & " INNER JOIN T013 ON T216.wkid = T013.wkid INNER JOIN T034 ON T217.gxid = T034.gxid "               myConn.SqlDataAdapterall.Fill(Me.DataSetall1, "Tgoods")
            If Me.DataSetall1.Tables("Tgoods").Rows.Count > 0 Then            Me.DataSetall1.Tables("Tgoods").Columns("project").Caption = "计划"
                Me.DataGrid1.DataSource = Me.DataSetall1.Tables("Tgoods")
                Me.DataGrid1.DataMember = Me.DataSetall1.Tables("Tgoods").TableName
                Me.DataGrid1.DataKeyField = Me.DataSetall1.Tables("Tgoods").Columns("goodscode").ColumnName
                Me.DataGrid1.DataBind()
      

  3.   

    至今为止我还没有发现如何修改模板中的样式的方法,既然你知道字段名称,为何不静态的定制好字段显示的样式呢?这样还比较的方便些的。原来你增加一个列的显示使用<asp:BoundColumn>……现在使用<asp:TemplateColumn就可以了,我已经给你贴出一个列的样式定义了,你不明白吗?
      

  4.   

    是呀,既然DataSet中的字段是固定的,那怎么不直接在设计的时候加入邦定列或者模板列呢?那样处理起来更方便呀。
      

  5.   

    得了,最后就是那样做的,为什么不能动态的写datagrid的各种属性~!