ASP.NET AJAX动态创建表格输入部信息教程
186 浏览量
更新于2024-08-29
收藏 52KB PDF 举报
在ASP.NET中,当需要处理动态创建的表单元素,如文本框,特别是与AJAX交互时,可以采用以下技术方案。在这个特定的例子中,我们要在同一个页面上录入公司及其多个部门的信息。以下是对给定代码和场景的详细解释:
首先,页面HTML代码和JavaScript脚本用于动态创建表格行,每个行包含部门的相关信息,如经理和联系电话。`addRow()`函数负责添加新行,而`delRow(obj)`函数则用于删除选定的行。这些功能通过在JavaScript中操作DOM(文档对象模型)实现。
```html
<table id="tbl">
<!-- 表格内容将在这里动态生成 -->
</table>
<script language="javascript" type="text/javascript">
function addRow() {
// ...
}
function delRow(obj) {
// ...
}
</script>
```
`addRow()`函数中,`tbl.insertRow(rows)`用于在表格的末尾插入一行,然后通过`tr.insertCell(i)`在新行中插入单元格。如果单元格位置是最后一个(即部门的联系电话),则插入一个删除链接;否则,插入一个文本输入框。
为了获取这些动态创建的文本框的值,我们可以使用AJAX技术,如jQuery的`$.ajax()`方法,向服务器发送异步请求,更新数据库。然而,给定的代码片段中没有包含这部分内容。通常,你需要在JavaScript中创建一个事件监听器,比如在提交按钮的点击事件中,调用一个函数来收集所有文本框的值,并通过AJAX发送到服务器。
```javascript
function getPageData() {
var companyName = /* 获取公司名称的逻辑 */;
// 遍历表格,获取所有部门信息
var departments = [];
var tbl = document.getElementById('tbl');
for (var i = 1; i < tbl.rows.length; i++) { // 从第1行开始,因为第0行可能是表头
var department = {};
department.manager = tbl.rows[i].cells[0].getElementsByTagName('input')[0].value;
department.phone = tbl.rows[i].cells[1].getElementsByTagName('input')[0].value;
departments.push(department);
}
// 使用AJAX发送数据到服务器
$.ajax({
url: 'SaveDepartmentInfo.aspx', // 服务器端处理页面
type: 'POST',
data: JSON.stringify({ companyName: companyName, departments: departments }),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(response) {
// 处理服务器返回的结果
},
error: function(xhr, status, error) {
// 错误处理
}
});
}
```
在服务器端,如ASP.NET,你需要一个接收这些数据并处理的页面,例如`SaveDepartmentInfo.aspx`。使用C#代码,你可以从`Request.Form`或`Request.InputStream`获取JSON数据,解码并填充到对应的类或结构体中,然后将这些信息保存到数据库。
```csharp
[WebMethod]
public static void SaveDepartmentInfo(string companyName, Department[] departments)
{
// 解析JSON数据到强类型对象
JavaScriptSerializer serializer = new JavaScriptSerializer();
Company company = new Company { Name = companyName };
List<Department> parsedDepartments = serializer.Deserialize<List<Department>>(departments);
// 存储到数据库的逻辑
using (var db = new YourDbContext())
{
// 插入或更新公司信息
db.Companies.AddOrUpdate(company);
db.SaveChanges();
// 插入部门信息
foreach (var department in parsedDepartments)
{
department.CompanyId = company.Id;
db.Departments.Add(department);
}
db.SaveChanges();
}
}
public class Department
{
public int Id { get; set; }
public int CompanyId { get; set; }
public string Manager { get; set; }
public string PhoneNumber { get; set; }
}
public class Company
{
public int Id { get; set; }
public string Name { get; set; }
// 公司其他属性...
}
```
这个示例展示了如何在ASP.NET中使用AJAX与动态创建的表单元素交互,以及如何将这些数据提交到服务器进行存储。确保在实际应用中,考虑数据验证、异常处理和安全性,如防止SQL注入等。
459 浏览量
2013-11-14 上传
2008-12-09 上传
2021-04-08 上传
2008-07-24 上传
2007-06-11 上传
点击了解资源详情
点击了解资源详情
2020-10-29 上传
weixin_38621638
- 粉丝: 1
- 资源: 983
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜