2011-12-14 46 views
2

我有網格視圖和以下代碼在javascript中添加新行。問題是,當我點擊按鈕添加新行時,它添加了行,但它也包含前一行數據,並且不保存到數據庫。它會產生錯誤「無效號碼」。使用Javascript添加行的網格

<script type='text/javascript' language='javascript'> 
     function AddNewRecord() 
     { 
      var grd = document.getElementById('GridView1'); 
      var tbod=grd.rows[0].parentNode; 
      var newRow=grd.rows[grd.rows.length - 1].cloneNode(true); 
      tbod.appendChild(newRow); 
      return false; 

     } 
    </script> 
<asp:Button ID="Button2" runat="server" Text="Add Row" OnClientClick="return AddNewRecord();"/> 

我應該怎麼做,以便該行應該生成空白,也應該保存到數據庫。

我有這樣的代碼電網

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" OnRowCreated="myGridView_ItemCreated" Headerstyle-CssClass="myStyle" 
           BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" CellPadding="4" Width="859px"> 
           <RowStyle BackColor="White" ForeColor="#003399" HorizontalAlign="Right" /> 
           <Columns> 
            <asp:TemplateField HeaderText="Card No"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtCardNo" runat="server" Width="60px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Zone"> 
             <ItemTemplate> 
              <asp:DropDownList ID="ddlZone" runat="server" DataSourceID="SqlDataSource2" 
               DataTextField="ZONE_DESC" DataValueField="ZONE_NO" Width="80px"> 
              </asp:DropDownList> 
              <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
               ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand='SELECT DISTINCT * FROM "MLK_00_05" order by Zone_DESC'> 
              </asp:SqlDataSource> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Vehicle No"> 
             <ItemTemplate> 
              <asp:DropDownList ID="ddlVeh" runat="server" DataSourceID="SqlDataSource1" DataTextField="VEHICLE_NUMBER" 
               DataValueField="VEH_COD" Width="80px"> 
              </asp:DropDownList><asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
               ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand='SELECT DISTINCT VEHICLE_NUMBER, DEVICEID, VEH_COD FROM MLK_VEHICLE ORDER BY 1'> 
              </asp:SqlDataSource> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Date"> 
             <ItemTemplate> 
              <asp:DropDownList ID="ddlStartDate" runat="server" Width="80px" AppendDataBoundItems="True"> 
              </asp:DropDownList> 


             </ItemTemplate> 
             <ItemStyle Wrap="False" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="HH MM"> 
             <ItemTemplate> 
              &nbsp;<asp:DropDownList ID="ddlStartHH" runat="server" Width="50px"> 
              </asp:DropDownList>&nbsp;<asp:DropDownList ID="ddlStartMM" runat="server" Width="50px"> 
              </asp:DropDownList> 
             </ItemTemplate> 
             <ItemStyle HorizontalAlign="Center" Width="800px" Wrap="False" /> 
             <HeaderTemplate> 
              HH &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; MM 
             </HeaderTemplate> 
             <HeaderStyle Wrap="False" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Date"> 
             <ItemTemplate> 
              &nbsp;<asp:DropDownList ID="ddlEntryDate" runat="server" Width="80px"> 
              </asp:DropDownList> 

             </ItemTemplate> 
             <ItemStyle Wrap="False" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="hh:mm"> 
             <ItemTemplate> 
              <asp:DropDownList ID="ddlEntryHH" runat="server" Width="50px"> 
              </asp:DropDownList> 
              <asp:DropDownList ID="ddlEntryMM" runat="server" Width="50px"> 
              </asp:DropDownList> 
             </ItemTemplate> 
             <ItemStyle Wrap="False" /> 
             <HeaderTemplate> 
              HH &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; MM 
             </HeaderTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Date"> 
             <ItemTemplate> 
              &nbsp;<asp:DropDownList ID="ddlGrossDate" runat="server" Width="80px"> 
              </asp:DropDownList> 

             </ItemTemplate> 
             <ItemStyle Wrap="False" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="hh:mm"> 
             <ItemTemplate> 
              <asp:DropDownList ID="ddlGrossHH" runat="server" Width="50px"> 
              </asp:DropDownList> 
              <asp:DropDownList ID="ddlGrossMM" runat="server" Width="50px"> 
              </asp:DropDownList> 
             </ItemTemplate> 
             <ItemStyle Wrap="False" /> 
             <HeaderTemplate> 
              HH &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; MM 
             </HeaderTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Gross Weight(kg)"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtGrossWt" runat="server" Width="60px"></asp:TextBox> 
             </ItemTemplate> 
             <ItemStyle HorizontalAlign="Right" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Tare Weight(kg)"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtTareWt" runat="server" Width="60px" ></asp:TextBox> 
             </ItemTemplate> 
             <ItemStyle HorizontalAlign="Right" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Net Weight(kg)"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtNetWt" runat="server" Width="60px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Rate"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtRate" runat="server" Width="60px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Date"> 
             <ItemTemplate> 
              &nbsp; 
              <asp:DropDownList ID="DdlTareDate" runat="server" Width="80px" > 
              </asp:DropDownList> 

             </ItemTemplate> 
             <ItemStyle Wrap="False" /> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="hh:mm"> 
             <ItemTemplate> 
              <asp:DropDownList ID="ddlTareHH" runat="server" Width="50px"> 
              </asp:DropDownList> 
              <asp:DropDownList ID="ddlTareMM" runat="server" Width="50px"> 
              </asp:DropDownList> 
             </ItemTemplate> 
             <ItemStyle Wrap="False" /> 
             <HeaderTemplate> 
              HH &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; MM 
             </HeaderTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="FAT(%)"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtFat" runat="server" Width="50px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="LR"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtLR" runat="server" Width="50px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="SNF(%)"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtSNF" runat="server" Width="50px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Protein(%)"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtProtein" runat="server" Width="50px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="MBRT"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtMBRT" runat="server" Width="50px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Cheese"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtCheese" runat="server" Width="50px"></asp:TextBox> 
             </ItemTemplate> 
            </asp:TemplateField> 
            <asp:TemplateField HeaderText="Distance"> 
             <ItemTemplate> 
              <asp:TextBox ID="txtDistance" runat="server" Width="60px"></asp:TextBox> 
             </ItemTemplate> 
             <ItemStyle HorizontalAlign="Right" /> 
            </asp:TemplateField> 
           </Columns> 
           <FooterStyle BackColor="#99CCCC" ForeColor="#003399" /> 
           <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" /> 
           <SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" /> 
           <HeaderStyle BackColor="CornflowerBlue" Font-Bold="False" ForeColor="White" Font-Names="Arial" Font-Size="9pt" CssClass="myStyle" /> 
          </asp:GridView> 
+0

任何人都可以給我的問題的答案 –

回答

2

,因爲你正在做cloneNode(true),它只會克隆前一行並因此具有相同的數據上一行。使它爲空使用行中的每個元素的.text(""),因爲你沒有包含html我不能寫代碼。

+0

是否U意味着Gridview或Button上的HTML的函數被調用 –

+0

你能否粘貼你的一個完整的行元素? –

+0

是的,我現在粘貼整個代碼我fu說我可以粘貼我的vb.net代碼插入和加載Gridview –

0

對於你的場景,你可以通過javasscript在gridview中創建一個新行,但新行不是服務器端控件,所以當回發時,控制狀態不能保存在viewstate中,這就是爲什麼你不能保存到數據庫。

所以我認爲你可以在頁面中添加一個asp:hidden字段,合併新行(所有列)的數據並存儲在它中,當你點擊一個按鈕時,它應該觸發一個回發事件,你可以得到新行的數據由此隱藏字段的值確定。然後將它們保存到數據庫。