2013-04-05 58 views
0

我可以使用C#将数据从DataGridView插入到数据表中。但我无法更新数据从Datagridview到数据表使用C#窗口应用程序?将数据从Datagridview插入到C#中的Datatable?

for (int i = 0; i <= dgvSpplrfrm.Rows.Count-1;i++) 
     { 
      drLocal = dtLocalC.NewRow(); 
      drLocal["splr_Slno"] = dgvSpplrfrm.Rows[i].Cells[0].Value; 
      drLocal["splr_Cntctnm"] = dgvSpplrfrm.Rows[i].Cells[1].Value; 
      drLocal["splr_Cntctdesig"] = dgvSpplrfrm.Rows[i].Cells[2].Value; 
      drLocal["splr_Cntctmoblno"] = dgvSpplrfrm.Rows[i].Cells[3].Value; 
      drLocal["splr_Cntctemail"] = dgvSpplrfrm.Rows[i].Cells[4].Value; 
      dtLocalC.Rows.Add(drLocal); 
     } 
+0

你添加的列在数据表? – Arshad 2013-04-05 12:16:16

+0

从数据库列应添加...,根据列我想插入和更新数据 – Anjali 2013-04-05 12:28:32

+0

检查我的答案低于 – Arshad 2013-04-05 12:34:42

回答

2

确保您DataTable包含了所有你想要的列复制。请注意0​​的ColumnName以及DataGridView。你可以试试这个:

public DataTable GetDataTable() 
{ 
    DataTable dtLocalC = new DataTable(); 
    dtLocalC.Columns.Add("splr_Slno"); 
    dtLocalC.Columns.Add("splr_Cntctnm"); 
    dtLocalC.Columns.Add("splr_Cntctdesig"); 
    dtLocalC.Columns.Add("splr_Cntctmoblno"); 
    dtLocalC.Columns.Add("splr_Cntctemail"); 

    DataRow drLocal = null; 
    foreach (DataGridViewRow dr in dgvSpplrfrm.Rows) 
    { 
     drLocal = dtLocalC.NewRow(); 
     drLocal["splr_Slno"] = dr.Cells["splr_Slno"].Value; 
     drLocal["splr_Cntctnm"] = dr.Cells["splr_Cntctnm"].Value; 
     drLocal["splr_Cntctdesig"] = dr.Cells["splr_Cntctdesig"].Value; 
     drLocal["splr_Cntctmoblno"] = dr.Cells["splr_Cntctmoblno"].Value; 
     drLocal["splr_Cntctemail"] = dr.Cells["splr_Cntctemail"].Value; 
     dtLocalC.Rows.Add(drLocal); 
    } 

    return dtLocalC; 
} 
0

的文章演示了如何从一个GridView获取数据以及如何将其存储到DataTable.Have看看下面的资源

resource link

+0

我想在Windows应用程序 – Anjali 2013-04-05 12:07:17

+0

你可以采用同样的逻辑方法.. – 2013-04-05 12:08:36

+0

看看这个[链接](http://msdn.microsoft.com/de-de/library/hw5ayeet.aspx)你需要对它进行强制转换。 DataTable dtFromGrid = new DataTable(); dtFromGrid = dataGridView1.DataSource as DataTable; – 2013-04-05 12:12:09

0

我试过this..May是这样一个帮助你..

第1步:

拖动一个GridView控件到窗体上,并设置它的AutoGenerateColumns属性为False。

使用模板字段显示GridView数据。按照您的要求设计GridView。

<asp:GridView runat="server" ID="gvShoppingCart" AutoGenerateColumns="False" 
       EmptyDataText="There is nothing in your shopping cart." GridLines="None" 
       Width="31%" CellPadding="5" ShowFooter="True" DataKeyNames="BookId" onrowdeleting="gvShoppingCart_RowDeleting" 
        > 
       <HeaderStyle HorizontalAlign="Left" BackColor="#3D7169" ForeColor="#FFFFFF" /> 
       <FooterStyle HorizontalAlign="Right" BackColor="#6C6B66" ForeColor="#FFFFFF" /> 
       <AlternatingRowStyle BackColor="#F8F8F8" /> 
       <Columns> 
         <asp:TemplateField HeaderText="Book Iamge"> 
         <ItemTemplate> 
          <asp:Image ID="BookImg" ImageUrl='<%# Eval("BookImage") %>' runat="server" hight="15px" width="20px"/> 

         </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Book Name"> 
         <ItemTemplate> 
          <asp:Label ID="lblBookName" runat="server" Text='<%#Eval("BookName")%>'></asp:Label><br /> 
         </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField HeaderText="Price"> 
         <ItemTemplate> 
          <asp:Label ID="lblPrice" runat="server" Text='<%#Eval("Bookprice")%>'></asp:Label><br /> 
         </ItemTemplate> 

        </asp:TemplateField> 

        <asp:TemplateField HeaderText="Quantity"> 
        <ItemTemplate> 
         <asp:TextBox ID="TXTQty" runat="server" Text="1" Width="40px" onkeyup="CalculateTotals();"></asp:TextBox> 
        </ItemTemplate> 
        <FooterTemplate> 
         <b>Total Amount:</b> 
        </FooterTemplate> 
       </asp:TemplateField> 
       <asp:TemplateField HeaderText="Total"> 
        <ItemTemplate> 
         <asp:Label ID="LBLSubTotal" runat="server" ></asp:Label> 
</ItemTemplate> 
        <FooterTemplate> 
         <asp:Label ID="LBLTotal" runat="server" ForeColor="White" ></asp:Label> 
        </FooterTemplate> 
       </asp:TemplateField> 

        <asp:CommandField DeleteText="Remove" ShowDeleteButton="True" /> 

       </Columns> 
      </asp:GridView> 

这里在Eval中传递你的表的列名。

步骤2:

使用以下代码来从一个GridView获取数据并将其存储到一个数据表。

private void getGridInfo() 
    { 
     DataTable dt = new DataTable(); 
     DataRow dr; 
     dt.Columns.Add(new System.Data.DataColumn("BookName", typeof(String))); 
     dt.Columns.Add(new System.Data.DataColumn("BookQty", typeof(String))); 
     dt.Columns.Add(new System.Data.DataColumn("BookImg", typeof(String))); 

     foreach (GridViewRow row in gvShoppingCart.Rows) 
     { 
      Image Bookimg = (Image)row.FindControl("BookImg"); 
      Label Booknames = (Label)row.FindControl("lblBookName"); 
      TextBox Bookqty = (TextBox)row.FindControl("TXTQty"); 
      Label TotalPrice = (Label)row.FindControl("LBLTotal"); 
      dr = dt.NewRow(); 
      dr[0] = Booknames.Text; 
      dr[1] = Bookqty.Text; 
      dr[2] = Bookimg.ImageUrl.ToString(); 
      dt.Rows.Add(dr); 
     } 
     Session["QtyTable"] = dt; 
     Response.Redirect("Admin/Default.aspx"); 
    } 

第3步:

在这里,在dt.Columns.Add(新System.Data.DataColumn( “BOOKNAME”,typeof运算(字符串)))你可以写在任何列标题文本。

调用此函数,您要将GridView数据存储到DataTable中。

2

简单ü可以做这样的:

public DataTable GetDataTable() 
{ 
    return dgvSpplrfrm.Rows.Cast<DataRow>().CopyToDataTable(); 
} 
相关问题