ASP.NET GridView中如何用C#来创建模版列?比如如何在GridView中用代码添加一个Button <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" 
                Width="453px">
            <Columns>
                <asp:BoundField DataField="id" HeaderText="id" />
                <asp:BoundField DataField="name" HeaderText="name" />
                <asp:BoundField DataField="age" HeaderText="age" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="UP" />
                        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Down" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

解决方案 »

  1.   

    类似
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="newsID,Us_ID"
            DataSourceID="jianweinews" ShowHeader="False" Width="189px" GridLines="None" EmptyDataText="还没有数据" >
            <Columns>
            <asp:TemplateField   ItemStyle-CssClass="hawk110" >
            <ItemTemplate >
             <asp:HyperLink ID=hyperlink runat="server" NavigateUrl=<%# "~/index/infopublishnews.aspx?newsID="+Eval("newsID")%>>传送</asp:HyperLink>
            </ItemTemplate>
            </asp:TemplateField>
            </Columns>
            <SelectedRowStyle BorderStyle="None" />
        </asp:GridView>如果Eval("newsID")不会绑定的话就直接赋予给GridView 的一个数据源 数据源中包含newsID列。第二种 自己设置NavigateUrl
    <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" 
                onrowdatabound="GridView3_RowDataBound" >
            <Columns>
                <asp:TemplateField>
                    <ItemTemplate>
                        <asp:HyperLink ID="HyperLink1" runat="server"><%#Eval("Name") %></asp:HyperLink>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            </asp:GridView>
    后台
    protected void GridView3_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            string[] url = { "1.aspx", "2.aspx", "3.aspx" };
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                HyperLink hl = e.Row.FindControl("HyperLink1") as HyperLink;
                hl.NavigateUrl = url[e.Row.RowIndex];//这里超链接只是例子,具体设置为什么在自己修改
            }
        }
      

  2.   

    我要的是纯代码的,比如下面的例子,我要代码实现。而非手动实现。BoundField mBoundField = new BoundField();
    mBoundField.HeaderText = mRow["FieldText"].ToString();
    //绑定数据字段
    mBoundField.DataField = mRow["FieldName"].ToString();
    this.GridViewData.Columns.Add(mBoundField);
      

  3.   

    我要的是纯代码的,比如下面的例子,我要代码实现。而非手动实现。代码动态添加模版列,请各位帮忙。BoundField mBoundField = new BoundField();
    mBoundField.HeaderText = mRow["FieldText"].ToString();
    //绑定数据字段
    mBoundField.DataField = mRow["FieldName"].ToString();
    this.GridViewData.Columns.Add(mBoundField);