c# – DataTable中的System.Data.DuplicateNameException

前端之家收集整理的这篇文章主要介绍了c# – DataTable中的System.Data.DuplicateNameException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在动态地将列添加到!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,以便每次页面加载新数据表时都会创建.如果这样做,那么您可能希望将数据表基于静态数据源.

猜你在找的C#相关文章