这是我的代码:请问如何在动态的添加一列,如<td class='textCenter'><%# Eval(arylst[0].ToString())%></td>,要求和红列并排
<Columns>
<asp:TemplateField>
  <ItemTemplate>
<table cellspacing='0' cellpadding='0' border="0px">
  <tr>
<td id="gridViewTd">
<table border='1' >                                          
  <tr class='light'>
<td id="<%# Eval(cnkeyField)%>">
<asp:Image ID="Image1" runat="server" ImageUrl="../images/FolderClose.gif" />
</td>
<td class='textCenter'><%# Eval(arylst[0].ToString())%></td>
  </tr>
 </table>
</td>
  </tr>                                  
</table>
  </ItemTemplate>
</asp:TemplateField>
  </Columns>

解决方案 »

  1.   

    刚写了个例子,是否对你有帮助,JS及CheckBox部份你可以不管
    public partial class ManagementSystem_Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            GridView1.DataSource = BuildGridViewDataSource();
            GridView1.DataBind(); 
           
        }    /// <summary>
        /// 用来做例子中的数据源
        /// </summary>
        /// <returns></returns>
        private DataTable BuildGridViewDataSource()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Number");
            dt.Columns.Add("Name");        DataRow dr = dt.NewRow();
            dr["Number"] = "1000";
            dr["Name"] = "张三";
            dt.Rows.Add(dr);        dr = dt.NewRow();
            dr["Number"] = "1001";
            dr["Name"] = "李四";
            dt.Rows.Add(dr);        return dt;
        }    protected void Button1_Click(object sender, EventArgs e)
        {
            BoundField nameColumn = new BoundField();
            nameColumn.HeaderText = "姓名";
            nameColumn.DataField = "Name";        GridView1.Columns.Add(nameColumn);
            GridView1.DataSource = BuildGridViewDataSource();
            GridView1.DataBind();
        }
    }
    <body>
        <form id="form1" runat="server">
            <div>
              <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
                    <Columns>
                        <asp:TemplateField HeaderText="操作">
                            <HeaderTemplate>
                                <asp:CheckBox ID="CB_AllSelect" runat="server" onclick="SelectAll(this)" Text="选择所有" />
                            </HeaderTemplate>
                            <ItemTemplate>
                                <asp:CheckBox ID="CB_Select" runat="server" Text="选择数据" />
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:BoundField DataField="Number" HeaderText="编号" />
                    </Columns>
                </asp:GridView>
                <asp:CheckBox ID="CheckBox1" runat="server" onclick="a(this);" />
                <br />
                <asp:Button ID="Button1" runat="server" OnClientClick="BeforeSubmit()" Text="Button" OnClick="Button1_Click" />&nbsp;
                </div>
        </form>
    </body>
    </html> <script type="text/javascript">
        function BeforeSubmit()
        {
            var gridView = document.getElementById("<%=GridView1.ClientID%>");        //只遍历GridView中的CheckBox;
            var inputs=gridView.getElementsByTagName("input");
            
            for(var i=0;i<inputs.length;i++)    
            {
                if(inputs[i].type="checkbox" && inputs[i].checked==true)
                    return true;
            }
            
            alert("请选择数据");
            return false;
       }
       
       function SelectAll(obj)
       {
            var gridView = document.getElementById("<%=GridView1.ClientID%>");
            //只遍历GridView中的CheckBox;
            var inputs=gridView.getElementsByTagName("input");
            
            for(var i=0;i<inputs.length;i++)    
            {
                if(inputs[i].type="checkbox")
                    inputs[i].checked=obj.checked;
            }
       }
        </script>
      

  2.   

    补充一点,如果要对新加的列手动绑定其它值,
    如下:
     protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //给新加的列绑定值,新加的列的列数
            if (e.Row.Cells.Count == 3)
            {
                if (e.Row.Cells[2] != null && e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.Cells[2].Text = e.Row.RowIndex.ToString();   //e.Row.RowIndex,可换成你要绑定的值
                }
            }
        }
      

  3.   

    这样写很乱很复杂,你可以不用GridView,在后台直接产生好了HTML,传到前台页面,可以用AJAX很好的实现
      

  4.   

    呵呵,刚上来,谢谢各位,请问用ajax怎么实现?
    我还没接触过ajax,请多多指点,呵呵
      

  5.   

    精彩!明白啦!
    我的問題是不會正確的運用gridview.columns.add()函數,現在明白了,謝謝
      

  6.   

    你这个是定性的把它添加到所有的列的最后面,如果我想让他添加到指定一个位置的话不是就没办法了!
    我发现this.GridView1.Columns只有add这个方法,没有addat这个方法,怎么能实现真正的动态???
      

  7.   


    this.gridview1.columns.insert() 可以添加到指定的位置