private void bt_insert_Click(object sender, System.EventArgs e)
{
string sql="select * from Code where Codeid='1'";
executesql.RunSqlDataSet(sql);
DataTable tbcode=executesql.RunSqlDataSet(sql).Tables[0];
            DataRow dr = tbcode.NewRow(); 
            dr[0] = 1; 
dr[1] = "";
dr[2] = "";
dr[3] = true;
            tbcode.Rows.Add(dr); 
            //再次绑定 
            DataGrid1.DataSource = tbcode; 
            DataGrid1.DataBind(); 

}上面的代码是在Datagrid外部点一下按钮datagrid新增了一行
但是如果再点一下按钮
让datagrid再新增加一行,怎么做
我现在发现就是你点10次,它也就新增加一行
难道再每次点新增都要先遍列一遍datagrid插入数据库,然后再新增吗?
private void bt_insert_Click(object sender, System.EventArgs e)
{
string sql="select * from Code where Codeid='1'";
executesql.RunSqlDataSet(sql);
DataTable tbcode=executesql.RunSqlDataSet(sql).Tables[0];
            DataRow dr = tbcode.NewRow(); 
            dr[0] = 1; 
dr[1] = "";
dr[2] = "";
dr[3] = true;
            tbcode.Rows.Add(dr); 
            //再次绑定 
            DataGrid1.DataSource = tbcode; 
            DataGrid1.DataBind(); 
           //写入插入数据库的代码

}
有没有借助seesion的方法先把新增的存进去,最后点保存后直接全部更新数据库呢?怎么做啊
谢谢

解决方案 »

  1.   

    可以的,可以参考
    http://lucky.diy.myrice.com/javascriptexam/addelement.htm
    一次存入数据库
      

  2.   

    你可以用一个缓存中的DataSet来做数据源
      

  3.   

    用session来存取数据集可以,以前我就是采取这种方式来解决的;不过总觉得这种方式没有直接用客户端控件加上javascript这样好用,而且还可以减少服务器的压力。关于如何用客户端控件+javascript来做,你可以到asp版去搜一下“动态增加行”试一下。唉,我总觉得.net里面的一些控件都是拿来骗人的,我就看不出datagrid有什么好,多数情况下只是加大服务器的压力而已。有些控件虽然为程序员节约了一点点时间,却给服务增加了很大的压力。
      

  4.   

    http://dotnet.chinaitlab.com/ASPNET/363515.html
      

  5.   

    动态添加的例子
    <BODY>
    <TABLE cellSpacing=0 cellPadding=0 width="98%" align=center border=0>
      <TBODY>
      <TR>
        <FORM id=form1 name=form1 action=program/survey/SurveyEdit.asp method=post>
        <TD>
          <TABLE class=tableborder cellSpacing=0 cellPadding=4 width="100%" 
    border=0>
            <TBODY>
            <TR>
              <TD bgColor=#c7e8f8>
                <DIV align=center><B>问题 1:</B> </DIV></TD>
              <TD bgColor=#c7e8f8><INPUT class=tableborder size=60 name=Question1> 
              </TD></TR>
            <TR>
              <TD>&nbsp;</TD>
              <TD><B>问题类型: </B><INPUT type=checkbox value=True name=chkQueType1> 
                多选类型 <BR>
                <DIV id=__idQueOption1 name="__idQueOption1"><B>问题选项:</B> <INPUT 
                class=tableborder onpropertychange=addNewChild(this) size=60 
                name=QueOption1> </DIV></TD></TR></TBODY></TABLE>
          <DIV id=__idInsertBefore></DIV><INPUT type=hidden value=1 name=newTable> 
          <BR>
          <DIV 
          style="PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; PADDING-TOP: 4px" 
          align=right><INPUT class=CustButton onclick=addNewQuestion() type=button value=增加一个新问题> 
    <INPUT class=CustButton type=submit value=保存设置> <INPUT class=CustButton type=reset value=重新设置> 
    </DIV></TD></FORM></TR></TBODY></TABLE>
    <SCRIPT>
    function addNewQuestion()
    {document.form1.newTable.value =  parseInt(document.form1.newTable.value) + 1;
    var newItemId;
    if( (document.form1.newTable.value).length > 2 )
    {
    alert("您的调查问题总数不能超过 99 个。")
    window.location.reload();
    }newItemId = document.form1.newTable.value;var objItem = '<table cellspacing="0" cellpadding="4" width="100%" border="0" class="tableborder">';
     objItem += '  <tr>';
     objItem += '<td bgcolor="#C7E8F8">';
     objItem += '      <div align="center"><b>问题 ' + newItemId + ':</b> </div>';
     objItem += '    </td>';
     objItem += '    <td bgcolor="#C7E8F8">';
     objItem += '      <input size="60" name="Question' + newItemId + '" class="tableborder">';
     objItem += '    </td>';
     objItem += '  </tr>';
     objItem += '  <tr>';
     objItem += '    <td>&nbsp;</td>';
     objItem += '    <td><b>问题类型: </b><input type="checkbox" value="True" name="chkQueType' + newItemId + '">';
     objItem += '      多选类型 <br>';
     objItem += '      <div id="__idQueOption' + newItemId + '"><b>问题选项:</b>';
     objItem += '        <input onpropertychange="addNewChild(this)" size="60" name="QueOption' + newItemId + '" class="tableborder">';
     objItem += '      </div>';
     objItem += '    </td>';
     objItem += '  </tr>';
     objItem += '</table>';document.all.__idInsertBefore.insertAdjacentHTML("beforeBegin", objItem);
    }function showTips(obj)
    {
    obj.title=obj.value;
    }function addNewChild(obj)
    {
    var isblank = "false";
    var objName = obj.name;
    var last2Char = objName.substring(objName.length - 2);
    if( last2Char.substring(0, 1) > '9' || last2Char.substring(0, 1) < '0' )
    {
    last2Char = last2Char.substring(1, 2);
    }for(var i=0; i < document.form1.elements[objName].length; i++)
    {
    if(document.form1.elements[objName].item(i).value == "")
    isblank = "yes"
    }if( isblank != "yes" )
    {
    var objItem = '<div id="__idQueOption' + last2Char + '"><b>问题选项:</b>';
       objItem += '  <input onpropertychange="addNewChild(this)" size="60" name="' + objName + '" class="tableborder" />';
       objItem += '</div>';objName = "__idQueOption" + last2Char;
    var varQueOption = document.all[objName];
    if( varQueOption.length != null )
      varQueOption = varQueOption.item(varQueOption.length-1);varQueOption.insertAdjacentHTML("afterEnd",objItem);
    }
    }
    </SCRIPT>
    </BODY></HTML>
      

  6.   

    http://msdn.microsoft.com/msdnmag/issues/03/07/DataPoints/