100分问题?希望大侠帮帮忙! 我现在想实现一个表单录入功能。(像开发票一样)一张表格,第一行显示各个字段名第二行为用户录入信息,还有个删除按钮 。表格外有个新增一行的按钮。等到录入完成后,点击提交按钮,根据每行写入数据库 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用xml解析实现,不过这样说起来比较麻烦,建议还是找msdn 在我看来不就是一个Insert和Delete吗? 2楼的反倒把我弄糊涂了?有必要xml解析那么复杂的么?datagrid控件里感觉都有这些现成的东东咯。 数据不是从数据库里读出了的,而是我们自己录入的。用那个控件好---------------------------------------------------------------那就不用DataGrid了直接画一个表格,每行每列放一个input添加/删除行 用JS 控制 增加行: table.Rows.Add("NewRow");删除行:好象是 table.Rows.Remove("RemoveRow"); 回复人: lewjack(lewjack) ( ) 信誉:100 2005-06-14 17:35:00 得分: 0 2楼的反倒把我弄糊涂了?有必要xml解析那么复杂的么?datagrid控件里感觉都有这些现成的东东咯。 ////////////////////////////但是楼主需要将添加的数据写进数据库啊难道不需要用xml解析吗?而且这样有一个好处,就是用js来操作页面的table的add和remove不使用DataGrid可以避免频繁的往服务器发送数据请求 我现在也是这样做的,不过不会控制增加行,删除行js有源码吗?------------------------------------------------------给表格增加/删除行有多种办法设 oTable 为表格对象 oTr 为表格的行对象1.insertBefore(oNewNode [, oChildNode]) 插入行oTable.insertBefore(oTr,oTable.rows(i));表示插入到表格的第i行之前(插入的行成为第i行)2.insertRow( [iIndex]) 插入行oTable.insertRow(i)表示直接插入新行为表格的第i行3.直接改写表格的innerHTML注意表格的ChildNode不是TR,而是Tbody 最好只设计到c#,跟asp.net 技术的实例 你可到如下地址去看一个示范实例,此示例可以完美实现你的要求.http://community.csdn.net/Expert/TopicView.asp?id=4016964 我想要表格,这个是dataGrid,录入信息得,而不是读取信息,给个实例大侠 你的问题和这里的一样http://community.csdn.net/Expert/topic/4092/4092577.xml?temp=.5383112 楼主,看来你的分得给我了,我就做过完全符合你的要求的实例,这里给出相关部分的全部源代码,不重要的内容做删改,重要部分保留,供你参考。有些我没有写具体说明,不过你仔细看看应该还是很明了的:private void ImageButton_add_Click(object sender, System.Web.UI.ImageClickEventArgs e){ string pid=DropDownList_selfBank.SelectedItem.Value.Trim(); sbDetailData=(new SelfBankDetailAccess()).LoadByPid(pid); Session.Add("SBDetailNewData",sbDetailData); int sum=sbDetailData.Tables[0].Rows.Count; //建一空行,插入到当前datagrid的最后一排,并将其处于编辑状态 DataRow row=sbDetailData.Tables[0].NewRow (); sbDetailData.Tables[0].Rows.InsertAt(row,sum); DataGrid_SelfBankDetail.EditItemIndex=sum; DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView; DataGrid_SelfBankDetail.DataBind(); //定位焦点 TextBox TB_cid=new TextBox(); TB_cid=(TextBox)(DataGrid_SelfBankDetail.Items[sum].Cells[1].FindControl("TextBox_cid")); Focus(TB_cid.ClientID); //该空行的第一列:自助的名称 Label LB_name=new Label(); LB_name=(Label)(DataGrid_SelfBankDetail.Items[sum].Cells[0].FindControl("Label_name")); LB_name.Text=DropDownList_selfBank.SelectedItem.Text.Trim(); } private void DspMsg(string Msg){ //这部分内容略}private void Focus(string focusStr){ //这部分内容略}private void DataGrid_SelfBankDetail_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e){ int index=e.Item.DataSetIndex; //这里不能使用Session,因为这里的sbDetailData内最后多了一排空内容,若点击取消的话,应该是将最后一排去掉, //但会造成若点击真实的最后一排的“取消”也被去掉的现象。故… //sbDetailData=(SelfBankDetailData)Session["SBDetailNewData"]; sbDetailData=(new SelfBankDetailAccess()).LoadByPid(DropDownList_selfBank.SelectedItem.Value.Trim()); #region 进入编辑状态 if (e.CommandName=="UpdateSelfBankDetail") { if (DataGrid_SelfBankDetail.EditItemIndex!=-1) { DspMsg("当前还处于编辑状态,不能执行其他操作!"); return; } DataGrid_SelfBankDetail.EditItemIndex=e.Item.ItemIndex; DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView; DataGrid_SelfBankDetail.DataBind(); TextBox TB_cid=new TextBox(); Focus(TB_cid.ClientID); #endregion #region 新建或者更新一个设备信息 if (e.CommandName=="Save") { #region 新建一个设备 if (index==sbDetailData.Tables[0].Rows.Count) { sbDetailData=new SelfBankDetailData(); DataRow row=sbDetailData.Tables[0].NewRow (); row[SelfBankDetailData.F_pid]=DropDownList_selfBank.SelectedItem.Value.Trim(); row[SelfBankDetailData.F_cid]=((TextBox)e.Item.FindControl("TextBox_cid")).Text.Trim(); row[SelfBankDetailData.F_CatgNo]=((TextBox)e.Item.FindControl("TextBox_catgNo")).Text.Trim(); row[SelfBankDetailData.F_IP]=((TextBox)e.Item.FindControl("TextBox_ip")).Text.Trim(); row[SelfBankDetailData.F_OS]=((TextBox)e.Item.FindControl("TextBox_os")).Text.Trim(); sbDetailData.Tables [0].Rows.Add(row); if(new SelfBankDetailAccess().InsertSelfBankDetail(sbDetailData)) { LabelHint.Text=((TextBox)e.Item.FindControl("TextBox_cid")).Text.Trim()+"添加成功!"; //注意,这里要装载全新的sbDetailData,并将其放进Session sbDetailData=new SelfBankDetailAccess().LoadByPid(DropDownList_selfBank.SelectedItem.Value.Trim()); Session.Add("SBDetailNewData",sbDetailData); //建一空行,插入到当前datagrid的最后一排,并将其处于编辑状态 int sum=sbDetailData.Tables[0].Rows.Count; DataRow newRow=sbDetailData.Tables[0].NewRow (); sbDetailData.Tables[0].Rows.InsertAt(newRow,sum); DataGrid_SelfBankDetail.EditItemIndex=sum; DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView; DataGrid_SelfBankDetail.DataBind(); //定位焦点 TextBox TB_cid=new TextBox(); TB_cid=(TextBox)(DataGrid_SelfBankDetail.Items[sum].Cells[1].FindControl("TextBox_cid")); Focus(TB_cid.ClientID); //该空行的第一列:自助的名称 Label LB_name=new Label(); LB_name=(Label)(DataGrid_SelfBankDetail.Items[sum].Cells[0].FindControl("Label_name")); LB_name.Text=DropDownList_selfBank.SelectedItem.Text.Trim(); } else { //略,保存失败; }}#endregion #region 更新 else{ DataGrid_SelfBankDetail.EditItemIndex=index; sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_cid]=((TextBox)e.Item.FindControl("TextBox_cid")).Text.Trim(); sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_CatgNo]=((TextBox)e.Item.FindControl("TextBox_catgNo")).Text.Trim(); sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_IP]=((TextBox)e.Item.FindControl("TextBox_ip")).Text.Trim(); sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_OS]=((TextBox)e.Item.FindControl("TextBox_os")).Text.Trim(); if ((new SelfBankDetailAccess()).UpdateSelfBankDetail(sbDetailData)) { DspMsg("更新成功!"); DataGrid_SelfBankDetail.EditItemIndex=-1; DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView; DataGrid_SelfBankDetail.DataBind(); } else { //略,更新失败 }}#endregion }#endregion#region 取消if (e.CommandName=="Cancel"){ DataGrid_SelfBankDetail.EditItemIndex=-1; DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[SelfBankDetailData.SelfBankDetail_TABLE].DefaultView; DataGrid_SelfBankDetail.DataBind();}#endregion#region 删除if (e.CommandName=="DeleteSelfBankDetail")//删除{ if (DataGrid_SelfBankDetail.EditItemIndex!=-1) { DspMsg("当前还处于编辑状态,不能执行其他操作!"); return; } string cid=sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_cid].ToString().Trim(); string ip=sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_IP].ToString().Trim(); if ((new SelfBankDetailAccess()).DeleteSelfBankDetail(cid))//删除某台自助设备信息 { DspMsg("编号为“"+cid+"”的、IP为“"+ip+"”的自助设备信息已被删除!"); sbDetailData.Tables[0].Rows.RemoveAt(index); Session.Add("SBDetailNewData",sbDetailData); DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView; DataGrid_SelfBankDetail.DataBind(); }}#endregion} 关于SQL的一个小问题 非常急-iis下访问数据库 求一正则表达式 匹配密码 要求8个长度以上,且必须包含字母 数字和 特殊字符 新窗口打开的问题....感谢帮忙 一个日期的问题!~ 请问System.DateTime.Now是服务器的时间还是客户端的时间? 怎样开发一个在计算机管理中显示的 服务 代码访问安全的问题(很典型) 2003里面有没有提供 方法合并相同结构的datatable? 谁能帮我把这个网站跑起来万分感谢 再开贴问局域网中用win2003作主机,怎样正确配置windows验证机制? 嘿!各位高手,给ASP.net初学者一点良方,建意或者资料吧?无从下手呀,现在....
datagrid控件里感觉都有这些现成的东东咯。
table.Rows.Add("NewRow");
删除行:
好象是
table.Rows.Remove("RemoveRow");
2楼的反倒把我弄糊涂了?有必要xml解析那么复杂的么?
datagrid控件里感觉都有这些现成的东东咯。
////////////////////////////
但是楼主需要将添加的数据写进数据库啊
难道不需要用xml解析吗?
而且这样有一个好处,就是用js来操作页面的table的add和remove
不使用DataGrid可以避免频繁的往服务器发送数据请求
js有源码吗?------------------------------------------------------给表格增加/删除行有多种办法设 oTable 为表格对象
oTr 为表格的行对象
1.insertBefore(oNewNode [, oChildNode]) 插入行oTable.insertBefore(oTr,oTable.rows(i));
表示插入到表格的第i行之前(插入的行成为第i行)2.insertRow( [iIndex]) 插入行oTable.insertRow(i)
表示直接插入新行为表格的第i行3.直接改写表格的innerHTML注意表格的ChildNode不是TR,而是Tbody
http://community.csdn.net/Expert/TopicView.asp?id=4016964
录入信息得,而不是读取信息,给个实例大侠
http://community.csdn.net/Expert/topic/4092/4092577.xml?temp=.5383112
private void ImageButton_add_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
string pid=DropDownList_selfBank.SelectedItem.Value.Trim();
sbDetailData=(new SelfBankDetailAccess()).LoadByPid(pid);
Session.Add("SBDetailNewData",sbDetailData);
int sum=sbDetailData.Tables[0].Rows.Count;
//建一空行,插入到当前datagrid的最后一排,并将其处于编辑状态
DataRow row=sbDetailData.Tables[0].NewRow ();
sbDetailData.Tables[0].Rows.InsertAt(row,sum);
DataGrid_SelfBankDetail.EditItemIndex=sum;
DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView;
DataGrid_SelfBankDetail.DataBind();
//定位焦点
TextBox TB_cid=new TextBox();
TB_cid=(TextBox)(DataGrid_SelfBankDetail.Items[sum].Cells[1].FindControl("TextBox_cid")); Focus(TB_cid.ClientID);
//该空行的第一列:自助的名称
Label LB_name=new Label();
LB_name=(Label)(DataGrid_SelfBankDetail.Items[sum].Cells[0].FindControl("Label_name"));
LB_name.Text=DropDownList_selfBank.SelectedItem.Text.Trim();
}
private void DspMsg(string Msg)
{
//这部分内容略
}private void Focus(string focusStr)
{
//这部分内容略
}private void DataGrid_SelfBankDetail_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
int index=e.Item.DataSetIndex;
//这里不能使用Session,因为这里的sbDetailData内最后多了一排空内容,若点击取消的话,应该是将最后一排去掉,
//但会造成若点击真实的最后一排的“取消”也被去掉的现象。故…
//sbDetailData=(SelfBankDetailData)Session["SBDetailNewData"];
sbDetailData=(new SelfBankDetailAccess()).LoadByPid(DropDownList_selfBank.SelectedItem.Value.Trim());
#region 进入编辑状态
if (e.CommandName=="UpdateSelfBankDetail")
{
if (DataGrid_SelfBankDetail.EditItemIndex!=-1)
{
DspMsg("当前还处于编辑状态,不能执行其他操作!");
return;
}
DataGrid_SelfBankDetail.EditItemIndex=e.Item.ItemIndex; DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView; DataGrid_SelfBankDetail.DataBind();
TextBox TB_cid=new TextBox();
Focus(TB_cid.ClientID);
#endregion #region 新建或者更新一个设备信息
if (e.CommandName=="Save")
{
#region 新建一个设备
if (index==sbDetailData.Tables[0].Rows.Count)
{
sbDetailData=new SelfBankDetailData();
DataRow row=sbDetailData.Tables[0].NewRow ();
row[SelfBankDetailData.F_pid]=DropDownList_selfBank.SelectedItem.Value.Trim();
row[SelfBankDetailData.F_cid]=((TextBox)e.Item.FindControl("TextBox_cid")).Text.Trim();
row[SelfBankDetailData.F_CatgNo]=((TextBox)e.Item.FindControl("TextBox_catgNo")).Text.Trim();
row[SelfBankDetailData.F_IP]=((TextBox)e.Item.FindControl("TextBox_ip")).Text.Trim();
row[SelfBankDetailData.F_OS]=((TextBox)e.Item.FindControl("TextBox_os")).Text.Trim(); sbDetailData.Tables [0].Rows.Add(row);
if(new SelfBankDetailAccess().InsertSelfBankDetail(sbDetailData))
{
LabelHint.Text=((TextBox)e.Item.FindControl("TextBox_cid")).Text.Trim()+"添加成功!";
//注意,这里要装载全新的sbDetailData,并将其放进Session
sbDetailData=new SelfBankDetailAccess().LoadByPid(DropDownList_selfBank.SelectedItem.Value.Trim());
Session.Add("SBDetailNewData",sbDetailData);
//建一空行,插入到当前datagrid的最后一排,并将其处于编辑状态
int sum=sbDetailData.Tables[0].Rows.Count;
DataRow newRow=sbDetailData.Tables[0].NewRow (); sbDetailData.Tables[0].Rows.InsertAt(newRow,sum); DataGrid_SelfBankDetail.EditItemIndex=sum;
DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView;
DataGrid_SelfBankDetail.DataBind();
//定位焦点
TextBox TB_cid=new TextBox();
TB_cid=(TextBox)(DataGrid_SelfBankDetail.Items[sum].Cells[1].FindControl("TextBox_cid"));
Focus(TB_cid.ClientID); //该空行的第一列:自助的名称
Label LB_name=new Label();
LB_name=(Label)(DataGrid_SelfBankDetail.Items[sum].Cells[0].FindControl("Label_name"));
LB_name.Text=DropDownList_selfBank.SelectedItem.Text.Trim();
}
else
{
//略,保存失败;
}
}
#endregion #region 更新
else
{
DataGrid_SelfBankDetail.EditItemIndex=index; sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_cid]=((TextBox)e.Item.FindControl("TextBox_cid")).Text.Trim();
sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_CatgNo]=((TextBox)e.Item.FindControl("TextBox_catgNo")).Text.Trim();
sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_IP]=((TextBox)e.Item.FindControl("TextBox_ip")).Text.Trim();
sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_OS]=((TextBox)e.Item.FindControl("TextBox_os")).Text.Trim();
if ((new SelfBankDetailAccess()).UpdateSelfBankDetail(sbDetailData))
{
DspMsg("更新成功!"); DataGrid_SelfBankDetail.EditItemIndex=-1;
DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView; DataGrid_SelfBankDetail.DataBind();
}
else
{
//略,更新失败
}
}
#endregion
}
#endregion#region 取消
if (e.CommandName=="Cancel")
{
DataGrid_SelfBankDetail.EditItemIndex=-1;
DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[SelfBankDetailData.SelfBankDetail_TABLE].DefaultView;
DataGrid_SelfBankDetail.DataBind();
}
#endregion#region 删除
if (e.CommandName=="DeleteSelfBankDetail")//删除
{
if (DataGrid_SelfBankDetail.EditItemIndex!=-1)
{
DspMsg("当前还处于编辑状态,不能执行其他操作!");
return;
}
string cid=sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_cid].ToString().Trim();
string ip=sbDetailData.Tables[0].DefaultView[index][SelfBankDetailData.F_IP].ToString().Trim();
if ((new SelfBankDetailAccess()).DeleteSelfBankDetail(cid))//删除某台自助设备信息
{
DspMsg("编号为“"+cid+"”的、IP为“"+ip+"”的自助设备信息已被删除!");
sbDetailData.Tables[0].Rows.RemoveAt(index);
Session.Add("SBDetailNewData",sbDetailData);
DataGrid_SelfBankDetail.DataSource=sbDetailData.Tables[0].DefaultView; DataGrid_SelfBankDetail.DataBind();
}
}
#endregion
}