zl程序教程

您现在的位置是:首页 >  后端

当前栏目

asp.net中利用ajax获取动态创建表中文本框的值

NetASPAJAX 利用 获取 表中 文本框 动态创建
2023-06-13 09:14:16 时间
假设现在主表为公司表(公司ID,公司名称,公司类型,公司规模),从表为部门表(部门ID,公司ID,经理,联系电话),现在一个公司有四个部门,要在同一个页面上录入公司信息以及四个部门的信息,如何动态创建部门信息录入口,以及如何获取数据存储到数据库中,请看下面的代码。
页面HTML代码及js脚本
代码
复制代码代码如下:

<%@PageLanguage="C#"AutoEventWireup="true"Codebehind="Default.aspx.cs"Inherits="WebApp._Default"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>UntitledPage</title>
<scriptlanguage="javascript"type="text/javascript">
functionaddRow()
{
vartbl=document.getElementById("tbl");
varrows=tbl.rows.length;
vartr=tbl.insertRow(rows);
vartd;
for(vari=0;i<4;i++)
{
td=tr.insertCell(i);
if(i==3)
td.innerHTML="<aid="a"+rows+""href="#"onclick="delRow(this)">删除</a>";
else
td.innerHTML="<inputid="txt"+rows+i+""type="text"/>";
}
}
functiondelRow(obj)
{
vartbl=document.getElementById("tbl");
tbl.deleteRow(obj.parentNode.parentNode.rowIndex);
}
functiongetPageData()
{
varcompanyName=document.getElementById("txtCompanyName");
varcompanySize=document.getElementById("txtCompanySize");
varcompanyType=document.getElementById("ddlCompanyType");
vartbl=document.getElementById("tbl");
vartxt;
vardatas=newArray(tbl.rows.length-1);
for(vari=1;i<tbl.rows.length;i++)
{
txt=tbl.rows[i].getElementsByTagName("input");
datas[i-1]=txt[0].value+","+txt[1].value+","+txt[2].value;
}
PageMethods.GetData(companyName.value,companySize.value,companyType.options[companyType.selectedIndex].value,datas,showResult);
}
functionshowResult(msg)
{
alert(msg);
}
</script>
</head>
<body>
<formid="form1"runat="server">
<asp:ScriptManagerID="ScriptManager1"runat="server"EnablePageMethods="true"></asp:ScriptManager>
<table>
<tr>
<td>
公司名称:</td>
<td>
<asp:TextBoxID="txtCompanyName"runat="server"></asp:TextBox></td>
<td>
公司规模:</td>
<td>
<asp:TextBoxID="txtCompanySize"runat="server"></asp:TextBox></td>
<td>
公司类型:</td>
<td>
<asp:DropDownListID="ddlCompanyType"runat="server">
</asp:DropDownList></td>
</tr>
</table>
<inputid="btnAddRow"type="button"value="新增一行"onclick="addRow();"/>
<tableid="tbl">
<tr>
<td>
部门</td>
<td>
电话</td>
<td>
经理</td>
<td>
</td>
</tr>
<tr>
<td>
<inputid="txt10"type="text"/></td>
<td>
<inputid="txt11"type="text"/></td>
<td>
<inputid="txt12"type="text"/></td>
<td>
<aid="a1"href="#"onclick="delRow(this)">删除</a></td>
</tr>
</table>
<inputid="btnOK"type="button"value="确定"onclick="getPageData();"/>
<br/>
</form>
</body>
</html>

后置代码
代码
复制代码代码如下:

usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Collections;
usingSystem.Collections.Generic;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Text;
usingSystem.Web.UI.HtmlControls;
namespaceWebApp
{
publicpartialclass_Default:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
//绑定公司类型
ddlCompanyType.Items.Add(newListItem("国营企业","1"));
ddlCompanyType.Items.Add(newListItem("民营企业","2"));
ddlCompanyType.Items.Add(newListItem("外资企业","3"));
ddlCompanyType.SelectedValue="1";
}
}
[System.Web.Services.WebMethod]
publicstaticstringGetData(stringcompanyName,stringcompanySize,stringcompanyType,string[]depts)
{
StringBuilderbuider=newStringBuilder();//显示一下提取到的数据
buider.AppendLine(string.Format("公司名称:{0}",companyName));
buider.AppendLine(string.Format("公司规模:{0}",companySize));
buider.AppendLine(string.Format("公司性质:{0}",companyType));
CompanyInfoinfo=newCompanyInfo(companyName,companySize,companyType);//将数据插入到公司实体对象中
List<DepartmentInfo>infos=newList<DepartmentInfo>();
DepartmentInfoinfo1=null;
string[]temp;
for(inti=0;i<depts.Length;i++)
{
temp=depts[i].Split(newchar[]{","});
buider.AppendLine(string.Format("部门:{0},经理:{1},电话:{2}",temp[0],temp[1],temp[2]));
info1=newDepartmentInfo();
info1.DeptName=temp[0];
info1.Mamanger=temp[1];
info1.Phone=temp[2];
infos.Add(info1);//将数据插入到部门实体对象List集合中
}
//数据提取出来插入到数据库就是很简单的事情了。
 
returnbuider.ToString();
}
}
publicclassCompanyInfo
{
privatestring_companyName;
privatestring_companySize;
privatestring_companyType;
publicstringCompanyType
{
get{return_companyType;}
set{_companyType=value;}
}
publicstringCompanyName
{
get{return_companyName;}
set{_companyName=value;}
}
publicstringCompanySize
{
get{return_companySize;}
set{_companySize=value;}
}
publicCompanyInfo()
{}
publicCompanyInfo(stringcompanyName,stringcompanySize,stringcompanyType)
{
this._companyName=companyName;
this._companySize=companySize;
this._companyType=companyType;
}
}
publicclassDepartmentInfo
{
privatestring_deptName;
privatestring_mamanger;
privatestring_phone;
publicstringPhone
{
get{return_phone;}
set{_phone=value;}
}
publicstringMamanger
{
get{return_mamanger;}
set{_mamanger=value;}
}
publicstringDeptName
{
get{return_deptName;}
set{_deptName=value;}
}
publicDepartmentInfo()
{
}
}
}

首先是用JS实现动态新增一行、删除指定行的操作,然后利用AJAX的PageMethod方式,调用后台代码实现数据提取,然后把数据装载到公司实体对象与部门实体对象集合中,提交到数据库(这部分没有去实现,不用多说了,大家都会)。其中需要注意几个方面
、必须在ScriptManager设置EnablePageMethods="true",这样才能使用PageMethod方式
、在JS中调用的服务端函数必须加上[System.Web.Services.WebMethod]
其它的代码太简单,就不用一一说明。