想添加一个string是这样    protected void CreateFilestable()
    {
        //实例化数据表
        this.FilesTable = new DataTable();
        //组建文件名数据列
        DataColumn fileNameCol = new DataColumn("FileUpload", typeof(string));
        this.FilesTable.Columns.Add(fileNameCol);    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        DataRow row = this.FilesTable.NewRow();
        row["FileUpload"] = "abc";
        //将数据行添加到数据表中
        this.FilesTable.Rows.Add(row);
        //数据表接受一切修改
        this.FilesTable.AcceptChanges();
        GridView1.DataSource = FilesTable;
        GridView1.DataBind();
    }
我把DataColumn fileNameCol = new DataColumn("FileUpload", typeof(string));改成
DataColumn fileNameCol = new DataColumn("FileUpload", typeof(FileUpload));row["FileUpload"] = "abc";
改成
row["FileUpload"] = new FileUpload();
运行时候,会出错,说FilesTable不是有效的数据源

解决方案 »

  1.   

    可以使用模板列来实现:        <asp:GridView ID="GridView1" runat="server">
                <Columns>
                    <asp:TemplateField>
                        <asp:FileUpload runat="server" ID="compFile"></asp:FileUpload>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
      

  2.   

    罪过,打错了,更正下:        <asp:GridView ID="GridView1" runat="server" onrowupdated="GridView1_RowUpdated">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:FileUpload runat="server" ID="compFile"></asp:FileUpload>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
      

  3.   

    我是用DataTable绑定的,DataTable那边怎么写
      

  4.   

    直接在模板列中设置
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:FileUpload runat="server" ID="FileUpload 1"></asp:FileUpload>
                        </ItemTemplate>
                    </asp:TemplateField>
    findcontrol查找控件