我现在想实现一个表单录入功能。(像开发票一样)
一张表格,第一行显示各个字段名
第二行为用户录入信息,还有个删除按钮     。表格外有个新增一行的按钮。
等到录入完成后,点击提交按钮,根据每行写入数据库

解决方案 »

  1.   

    用xml解析实现,不过这样说起来比较麻烦,建议还是找msdn
      

  2.   

    在我看来不就是一个Insert和Delete吗?
      

  3.   

    2楼的反倒把我弄糊涂了?有必要xml解析那么复杂的么?
    datagrid控件里感觉都有这些现成的东东咯。
      

  4.   

    数据不是从数据库里读出了的,而是我们自己录入的。用那个控件好---------------------------------------------------------------那就不用DataGrid了直接画一个表格,每行每列放一个input添加/删除行 用JS 控制
      

  5.   

    增加行:
       table.Rows.Add("NewRow");
    删除行:
    好象是
      table.Rows.Remove("RemoveRow");
      

  6.   

    回复人: lewjack(lewjack) ( ) 信誉:100  2005-06-14 17:35:00  得分: 0  
     
     
       2楼的反倒把我弄糊涂了?有必要xml解析那么复杂的么?
    datagrid控件里感觉都有这些现成的东东咯。
      
     
    ////////////////////////////
    但是楼主需要将添加的数据写进数据库啊
    难道不需要用xml解析吗?
    而且这样有一个好处,就是用js来操作页面的table的add和remove
    不使用DataGrid可以避免频繁的往服务器发送数据请求
      

  7.   

    我现在也是这样做的,不过不会控制增加行,删除行
    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
      

  8.   

    最好只设计到c#,跟asp.net 技术的实例
      

  9.   

    你可到如下地址去看一个示范实例,此示例可以完美实现你的要求.
    http://community.csdn.net/Expert/TopicView.asp?id=4016964
      

  10.   

    我想要表格,这个是dataGrid,
    录入信息得,而不是读取信息,给个实例大侠
      

  11.   

    你的问题和这里的一样
    http://community.csdn.net/Expert/topic/4092/4092577.xml?temp=.5383112
      

  12.   

    楼主,看来你的分得给我了,我就做过完全符合你的要求的实例,这里给出相关部分的全部源代码,不重要的内容做删改,重要部分保留,供你参考。有些我没有写具体说明,不过你仔细看看应该还是很明了的:
    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
    }