ASP.NET动态创建DataTable及数据填充技巧
需积分: 50 145 浏览量
更新于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`、处理数据以及将其绑定到用户界面组件的过程。在实际开发中,你可以根据具体需求调整列定义、数据处理逻辑以及数据绑定方式。
1114 浏览量
648 浏览量
2011-12-21 上传
2023-05-18 上传
140 浏览量
2009-02-12 上传
2008-11-22 上传
114 浏览量
黄昏de守候者
- 粉丝: 0
- 资源: 1
最新资源
- Vue3.0_Learn
- django-currencies:django-currencies允许您定义不同的货币,并包括模板标签过滤器以允许在它们之间轻松转换
- Apna-Kangra:Apna Kangra是一款旅行应用程序,可让用户搜索和查找District Kangra中新的潜在旅行地点
- 适用于Qt4、Qt5的mqtt客户端
- SkylabCode
- 基于VS2010 MFC的WebSocket服务
- 演讲者战斗:选择最佳演讲的简便方法
- Turbo-Browser:基于React Native的简单安全的Internet移动浏览器
- ADC0809打造!实用性超强的电压显示方案分享-电路方案
- 文件夹下的文件对比程序
- RomeroBold
- Blogs:一般博客和代码
- 易语言zyCurl源码
- LINQ in Action.rar
- 深度学习asp留言板源码 v0.0.5
- python-choicesenum:具有额外功能的Python枚举,可以很好地与标签和选择字段一起使用