关键词:
asp.net动态的生成,删除table的行,主要是在后台动态创建单元行,单元表格,效果图:
2.代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="releaseAffair.aspx.cs" Inherits="affair_releaseAffair" %> <!DOCTYPE html> <!--发布事务页面:名称AffairName,内容content,创建日期--> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <table> <tr> <td> 发布个人事务 </td> </tr> <tr> <td> 事务名称:<asp:TextBox runat="server" ID="text_affairName"></asp:TextBox> </td> </tr> <tr> <td> 事务内容:<asp:TextBox runat="server" ID="text_affairContent" TextMode="MultiLine" Width="500px" Height="100px"></asp:TextBox> </td> </tr> </table><br /> <asp:Table ID="tableTarget" runat="server" Width="100%" CellSpacing="0" CaptionAlign="Bottom" CellPadding="2" > </asp:Table> <div> <asp:Button runat="server" ID="btnAddRow" Text="添加" OnClick="btnAddRow_Click"/> <asp:Button runat="server" ID="btnDelRow" Text="删除" OnClick="btnDelRow_Click" /> <asp:Button runat="server" ID="btnSave" Text="保存" OnClick="btnSave_Click" /> </div> </div> </form> </body> </html>
后台代码:
using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class affair_releaseAffair : System.Web.UI.Page { Sqlhelper sp = null; SqlDataReader dr = null; SqlCommand comm = null; protected void Page_Load(object sender, EventArgs e) { if (Session["username"] != null) { if (ViewState["count"] != null) { //每次刷新都重新建立表格循环再次添加行 for (int i = 0; i < Convert.ToInt16(ViewState["count"])/2; i++) { AddRows(tableTarget); } } } else { Response.Write("<script>alert(‘请先登录!‘)</script>"); // Server.Transfer("~/login.aspx"); Response.Write("<script>top.window.location.href = ‘../login.aspx?r=‘+Math.random() ;</script>"); //Response.Write("<script>window.location=‘../login.aspx‘;</script>"); //Response.Redirect("~/login.aspx",true); } } // 删除按钮事件,总是默认删除表的最后一行 protected void btnDelRow_Click(object sender, EventArgs e) { tableTarget.Rows.RemoveAt(tableTarget.Rows.Count - 1); tableTarget.Rows.RemoveAt(tableTarget.Rows.Count - 1); ViewState["count"] = Convert.ToInt16(ViewState["count"]) - 2; } protected void btnAddRow_Click(object sender, EventArgs e) { AddRows(tableTarget); ViewState["count"] = Convert.ToInt16(ViewState["count"]) + 2; //记录的table行数。 } /// <summary> ///table中有8列,四列label,三列是TextBox一列是DropDownList,这是一个添加行的函数 ///给表table1添加两行 /// </summary> /// <param name="table"></param> public void AddRows(Table table) { TableRow tr0 = new TableRow(); TableCell tc = new TableCell(); Label lb0 = new Label(); lb0.Text = "指标内容:"; lb0.Width = Unit.Parse("80px"); tc.Controls.Add(lb0); tc.Width = Unit.Parse("80px"); TableCell tc0 = new TableCell(); TextBox tb0 = new TextBox(); tb0.ID = "tbc" + table.Rows.Count; //content指标内容 tb0.TextMode = TextBoxMode.MultiLine; //多行 tb0.Width = Unit.Parse("400px"); tb0.Height = Unit.Parse("50px"); tc0.Controls.Add(tb0); tc0.ColumnSpan = 7; tr0.Cells.Add(tc); tr0.Cells.Add(tc0); table.Rows.Add(tr0); TableRow tr = new TableRow(); for (int i = 1; i <= 3; i++) { TableCell tc1 = new TableCell(); Label lb1 = new Label(); lb1.Text = "指标"+i+":"; lb1.Width= Unit.Parse("50px"); tc1.Controls.Add(lb1); tc1.Width = Unit.Parse("50px"); TableCell tc2 = new TableCell(); TextBox tb1 = new TextBox(); tb1.ID = "tb"+i+""+ table.Rows.Count; tb1.TextMode = TextBoxMode.MultiLine; tb1.Width = Unit.Parse("300px"); tc2.Controls.Add(tb1); tr.Cells.Add(tc1); tr.Cells.Add(tc2); } TableCell tc7 = new TableCell(); Label lb4 = new Label(); lb4.Width = Unit.Parse("80px"); lb4.Text = "您的选择:"; tc7.Controls.Add(lb4); tc7.Width = Unit.Parse("80px"); TableCell tc8 = new TableCell(); DropDownList dpl = new DropDownList(); dpl.ID = "dpl" + table.Rows.Count; for (int i = 1; i < 4; i++) dpl.Items.Add(i.ToString()); tc8.Controls.Add(dpl); tr.Cells.Add(tc7); tr.Cells.Add(tc8); table.Rows.Add(tr); table.Attributes.Add("border", "1"); } //保存选中的值,保存到数据库 protected void btnSave_Click(object sender, EventArgs e) { int num = saveAffair(); if (num == 1) {//成功 Response.Write("<script>alert(‘添加成功!‘)</script>"); } else { Response.Write("<script>alert(‘添加失败!‘)</script>"); } } //保存事务 public int saveAffair() { String content,affairName,sqlStr; int affairId=0,userId = getUserId(),num2=0; SqlDataReader dr = null; affairName = text_affairName.Text.Trim(); content = text_affairContent.Text.Trim(); if (affairName.Equals("") || content.Equals("")) { Response.Write("<script>alert(‘请输入事务!‘)</script>"); } else { num2 = 1; sp = Sqlhelper.getSqlhelper(); comm = sp.getComm(); sqlStr = "insert into affair(UserId,Content,AffairName,createDate) values("+ userId + ",‘"+ content + "‘,‘"+ affairName + "‘,GETDATE());"; try { comm.CommandText = sqlStr; int num = comm.ExecuteNonQuery(); sqlStr = "select * from affair order by id desc;"; comm.CommandText = sqlStr; dr = comm.ExecuteReader(); if (dr.HasRows == true) { dr.Read(); affairId = Convert.ToInt32(dr["Id"].ToString()); } dr.Close(); if (affairId > 0) saveTarget(affairId, comm);//保存指标 } catch (Exception ee) { num2 = 2; throw; } finally { sp.Close(); } }//else return num2; } //保存指标 public int saveTarget(int affairId,SqlCommand comm) { String content="", select1="", select2="", select3="", answer,sqlStr=""; int num=0; for (int i = 0; i < tableTarget.Rows.Count; i++) { if (i % 2 == 0) { //content内容 content = ((TextBox)tableTarget.Rows[i].FindControl("tbc" + i)).Text.Trim(); } else {//选项 select1 = ((TextBox)tableTarget.Rows[i].FindControl("tb1" + i)).Text.Trim(); select2 = ((TextBox)tableTarget.Rows[i].FindControl("tb2" + i)).Text.Trim(); select3 = ((TextBox)tableTarget.Rows[i].FindControl("tb3" + i)).Text.Trim(); answer = ((DropDownList)tableTarget.Rows[i].FindControl("dpl" + i)).SelectedValue; if(!content.Equals("")) sqlStr = "insert into "+"target"+ creatRandom() + " values("+ affairId + ",‘"+ content + "‘,‘"+ select1 + "‘,‘"+ select2 + "‘,‘"+ select3 + "‘,‘"+ answer + "‘);"; } if (!sqlStr.Equals("")|| !select1.Equals("")|| !select2 .Equals("")|| !select3.Equals("")) { comm.CommandText = sqlStr; num = comm.ExecuteNonQuery(); } } return num; } public int creatRandom() { //第二种方法可以指定一个int型参数作为随机种子: long tick = DateTime.Now.Ticks; Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)); // 而下面这段代码则指定返回值必须在50 - 100的范围之内: int iResult; int iUp = 20; int iDown = 1; iResult = ran.Next(iDown, iUp); return iResult; } public int getUserId() { int userId=0; sp = Sqlhelper.getSqlhelper(); comm = sp.getComm(); String username = Session["username"].ToString(); String sqlStr = "select Id from userInfo where Name=‘"+ username+"‘"; comm.CommandText = sqlStr; try { userId = (int)comm.ExecuteScalar(); } catch (Exception) { throw; } return userId; } }
核心代码:
/// <summary> ///table中有8列,四列label,三列是TextBox一列是DropDownList,这是一个添加行的函数 ///给表table1添加两行 /// </summary> /// <param name="table"></param> public void AddRows(Table table) { TableRow tr0 = new TableRow(); TableCell tc = new TableCell(); Label lb0 = new Label(); lb0.Text = "指标内容:"; lb0.Width = Unit.Parse("80px"); tc.Controls.Add(lb0); tc.Width = Unit.Parse("80px"); TableCell tc0 = new TableCell(); TextBox tb0 = new TextBox(); tb0.ID = "tbc" + table.Rows.Count; //content指标内容 tb0.TextMode = TextBoxMode.MultiLine; //多行 tb0.Width = Unit.Parse("400px"); tb0.Height = Unit.Parse("50px"); tc0.Controls.Add(tb0); tc0.ColumnSpan = 7; tr0.Cells.Add(tc); tr0.Cells.Add(tc0); table.Rows.Add(tr0); TableRow tr = new TableRow(); for (int i = 1; i <= 3; i++) { TableCell tc1 = new TableCell(); Label lb1 = new Label(); lb1.Text = "指标"+i+":"; lb1.Width= Unit.Parse("50px"); tc1.Controls.Add(lb1); tc1.Width = Unit.Parse("50px"); TableCell tc2 = new TableCell(); TextBox tb1 = new TextBox(); tb1.ID = "tb"+i+""+ table.Rows.Count; tb1.TextMode = TextBoxMode.MultiLine; tb1.Width = Unit.Parse("300px"); tc2.Controls.Add(tb1); tr.Cells.Add(tc1); tr.Cells.Add(tc2); } TableCell tc7 = new TableCell(); Label lb4 = new Label(); lb4.Width = Unit.Parse("80px"); lb4.Text = "您的选择:"; tc7.Controls.Add(lb4); tc7.Width = Unit.Parse("80px"); TableCell tc8 = new TableCell(); DropDownList dpl = new DropDownList(); dpl.ID = "dpl" + table.Rows.Count; for (int i = 1; i < 4; i++) dpl.Items.Add(i.ToString()); tc8.Controls.Add(dpl); tr.Cells.Add(tc7); tr.Cells.Add(tc8); table.Rows.Add(tr); table.Attributes.Add("border", "1"); }
以 ASP.NET MVC 表格形式动态添加行
】以ASP.NETMVC表格形式动态添加行【英文标题】:DynamicallyaddrowsinASP.NETMVCtableform【发布时间】:2019-09-2822:22:27【问题描述】:我正在尝试在ASP.NETMVC表下方编写一个“添加”按钮来动态追加一个空白行,然后有一个提交按钮以一键... 查看详情
js实现表格table动态添加删除行
1、页面内容 <tablestyle="border:1px;width:100%;height:160px"> <THEAD> 查看详情
js实现动态添加删除table行示例
<tablecellpadding="0"cellspacing="0"border="1"style="margin:auto;width:96%;"id="LearnInfoItem"><tr><tdcolspan="8"bgcolor="#96E0E2"style="height:30px;"><h3style="text-align:center; 查看详情
将动态添加的 html 表行作为参数发布到控制器 - ASP.NET Core/MVC
】将动态添加的html表行作为参数发布到控制器-ASP.NETCore/MVC【英文标题】:Postingdynamicallyaddedhtmltablerowstocontrollerasparameter-ASP.NETCore/MVC【发布时间】:2021-01-2420:25:22【问题描述】:在下面显示的表格中,动态创建了一行,我使用@Htm... 查看详情
asp.net + Bootstrap 动态表
】asp.net+Bootstrap动态表【英文标题】:asp.net+Bootstrapdynamicallytable【发布时间】:2018-08-2200:11:46【问题描述】:我正在尝试构建一个选项,以使用bootstrap和asp.net在表中添加和删除行。但是,我在动态添加DropDownList时遇到了问题。我... 查看详情
如何jquery实现表格数据的动态添加与统计
参考技术A比如设置table的id为tabvartrHTML="..."$("#tab").append(trHTML);//在table最后面添加一行$("#tabtr:eq(2)").after(trHTML);//在table的第3行后面添加一行这样就可以进行动态的添加行了,至于你是通过什么事件来动态添... 查看详情
jquery实现table动态添加行删除行以及行的上移和下移
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/strict.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"><title></title><scriptsrc="http://code.jquery.com/jquery-1.8.3.min.js"></script>... 查看详情
vs2010asp.net中,怎么将一个datatable中的某行数据复制给另一个datatable中。
...Select();//获取Table1行对象数组Table2.Rows.Add(rows[1].ItemArray);//添加第2行数据给Table2如果是带条件筛选,建议变成dataview进行筛选。这里不举例了。参考技术A我之前开发网站防辐射在线时也遇到了这样的问题,后来解决了,并在百度博客... 查看详情
检测 html table Knockout/ASP.NET MVC 中的选定行
】检测htmltableKnockout/ASP.NETMVC中的选定行【英文标题】:DetectingSelectedRowinhtmltableKnockout/ASP.NETMVC【发布时间】:2013-03-0412:42:52【问题描述】:我已经使用ko.mapping.fromJS(Model)将ASP.NETMVCviewModel加载到KnockoutJS中。我的viewModel看起来像这... 查看详情
如何动态向 UITableView 添加行? [关闭]
...问题描述】:需要应用程序将行动态添加到TableView。如何实现?这似乎不起作用:NSIndexPath*path=[[NSIndexPathalloc]initWithIndex:(rowCount-1)];[self.table 查看详情
asp.net动态添加多个用户控件
动态添加多个相同用户控件,并使每个用户控件获取不同的内容。用户控件代码: 代码WebControls usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Web; usingSystem.Web.UI; usingSystem.W 查看详情
asp.net的newrow()、rows是有啥作用?有啥用法呢?
...从0开始。既然Rows是当前表的所有行的集合,所以当然有添加,删除和选择,就是你所写的["tb_user"].Rows.Add(mydrow);就是向这个表中添加一个行“mydrow”因为mydrow是DataRowmydrow=myds.Tables["tb_user"].NewRow();得来的,所以结... 查看详情
c#语言asp.net实现treeview控件读数据库动态生成树的代码
用c#语言在asp.net下实现treeview控件读数据库动态生成树的代码,要能过执行的!有没有人能回答啊,等不急了?回答的再加50分来自csdn上面的例子我试过可以1.下载地址http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebC... 查看详情
asp.net中后台不能动态添加前台tab页面
前提是EXT。我要做的是后台动态添加前台的EXTtab页面参考技术A采用MultiView控件,后台控制其标签页的显示和隐藏 查看详情
动态添加的页脚不会停留在 ASP.NET 页面的底部
】动态添加的页脚不会停留在ASP.NET页面的底部【英文标题】:Dynamicallyaddedfooterdoesn\'tstayatthebottomofpageASP.NET【发布时间】:2020-12-1204:44:13【问题描述】:在项目的某个页面中,我在循环内动态地将面板添加到表单中。当循环结束... 查看详情
如何为动态添加的新输入行设置 ngModel 角度 4+(mat-table)
】如何为动态添加的新输入行设置ngModel角度4+(mat-table)【英文标题】:HowdoIsetthengModelfordynamicallyaddednewinputrowsangular4+(mat-table)【发布时间】:2020-03-3017:04:15【问题描述】:我会保持简短,我想将ngModel添加到动态添加的新输入行... 查看详情
分析路由时动态添加 Asp .NET Core Controller
】分析路由时动态添加Asp.NETCoreController【英文标题】:AddingAsp.NETCoreControllerdynamicallywhenanalyzingroute【发布时间】:2021-06-0413:02:15【问题描述】:总结:假设我们正在调用urlhttp://localhost:5600/Student/All/我的目标是我的Asp.NETCoreWebApi在... 查看详情
asp.net将后台循环语句查询的结果输出到前台table
...以的,.net的没见过解决方法:就是可以通过控件的方式实现,GridView或者是Repeater都可以通过JS/JQ的页面级填充后台代码生成第2、3其实就是一个的拼接的步骤例:前台源码:<tableid="t1"runat="server"></table>JQ:$... 查看详情