ASP.NET动态创建DataTable及数据填充技巧

需积分: 50 27 下载量 46 浏览量 更新于2024-09-13 收藏 1KB TXT 举报
本文将介绍如何在ASP.NET中动态创建`Table`对象并进行赋值。这个过程通常在处理数据库数据或构建动态数据显示时非常有用。 在ASP.NET中,我们可能需要根据不同的业务需求动态地创建数据表结构,并填充数据。在给定的示例中,开发人员首先执行了一个SQL查询,获取了名为`T_signInfo`表的前六条记录,然后使用这些数据创建一个新的`DataTable`对象。 ```csharp string sqlStr2 = "select top 6 * from T_signInfo"; DataTable dt2 = DataBase.GetTable(sqlStr2); ``` 这里的`DataBase.GetTable(sqlStr2)`方法是一个自定义方法,用于执行SQL查询并返回结果集作为`DataTable`。你可以替换为ADO.NET中的`SqlCommand`和`SqlDataAdapter`,或者其他ORM框架如Entity Framework的相应方法来实现相同功能。 接下来,创建一个新的空`DataTable`对象`dt`,并定义其列结构: ```csharp DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("Name", typeof(string))); dt.Columns.Add(new DataColumn("phone", typeof(string))); dt.Columns.Add(new DataColumn("Brand", typeof(string))); dt.Columns.Add(new DataColumn("Model", typeof(string))); ``` 这里定义了四列,分别对应姓名(Name)、电话(phone)、品牌(Brand)和型号(Model),并且指定了每列的数据类型为字符串。 然后,遍历`dt2`中的每一行数据,创建新的`DataRow`对象并填充`dt`: ```csharp for (int i = 0; i < dt2.Rows.Count; i++) { DataRow dr = dt.NewRow(); // 根据性别的不同,处理Name字段 if (dt2.Rows[i]["sex"].ToString() == "Ü") { dr["Name"] = BaseHandle.GetContentString(dt2.Rows[i]["Name"].ToString(), 1, false) + "Üʿ"; } else if (dt2.Rows[i]["sex"].ToString() == "") { dr["Name"] = BaseHandle.GetContentString(dt2.Rows[i]["Name"].ToString(), 1, false) + ""; } // 隐藏电话号码的一部分,用星号(*)替换 dr["phone"] = BaseHandle.GetContentString(dt2.Rows[i]["PhoneNum"].ToString(), 3, false) + ""; // 直接复制Brand和Model字段 dr["Brand"] = dt2.Rows[i]["Brand"].ToString(); dr["Model"] = dt2.Rows[i]["Model"].ToString(); // 将新行添加到dt dt.Rows.Add(dr); } ``` 这段代码中,`BaseHandle.GetContentString`方法用于处理数据,可能是为了格式化或加密等目的。在电话号码处理部分,它隐藏了电话号码的一部分,将其替换为星号。性别处理部分则根据`sex`字段的值对`Name`字段进行特殊处理。 最后,将填充好的`DataTable`绑定到`Repeater2`控件,以便在网页上显示: ```csharp Repeater2.DataSource = dt; Repeater2.DataBind(); ``` `Repeater`控件在ASP.NET中常用于动态生成HTML,它可以基于数据源生成重复的模板元素,非常适合显示列表或表格数据。 总结来说,这个示例展示了在ASP.NET中如何动态创建`DataTable`、处理数据以及将其绑定到用户界面组件的过程。在实际开发中,你可以根据具体需求调整列定义、数据处理逻辑以及数据绑定方式。