我正在动态地将列添加到!IsPostBack中的静态数据表中.
static DataTable dtflow = new DataTable(); protected void Page_Load(object sender,EventArgs e) { if (!IsPostBack) { dtp.Columns.Add("slno"); dtp.Columns.Add("portname"); dtp.Columns.Add("type"); dtp.Columns.Add("portid"); dtp.Columns.Add("longitude"); dtp.Columns.Add("latitude"); dtp.Columns.Add("add1"); dtp.Columns.Add("add2"); dtp.Columns.Add("dist"); dtp.Columns.Add("state"); dtp.Columns.Add("country"); } }
但是,当我第二次运行我的网站时,它显示了这样的例外情况
Exception Details: System.Data.DuplicateNameException: A column named ‘slno’ already belongs to this DataTable.
谁能告诉我如何解决这个问题
解决方法
静态数据表意味着无论您的网页实例如何,它都将始终存在.因此,当您第一次运行网页时,您的Page_Load会创建数据表,一切都很好.
但是当您第二次加载该页面或者其他人尝试加载您的页面时,数据表仍然存在,因为它是静态的,因此您尝试在数据表已存在时添加列.
3种方法可以解决这个问题:1.删除然后再次添加列.不要这样做,它在每个方面都是多余的和错误的代码.2.在dtp.Columns.Adds周围添加if语句,以确保它仅在第一次加载页面时运行它们.你可以查看是否存在columnds,你可以创建一个bool标志,或者你想到的其他方法.3.从变量声明中删除static,以便每次页面加载新数据表时都会创建.如果这样做,那么您可能希望将数据表基于静态数据源.