我可以使用C#将DataGridView中的数据插入到Datatable中。但我无法使用c #windows应用程序将数据从Datagridview更新为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 :(得分:2)
你可以这样做:
public DataTable GetDataTable()
{
return dgvSpplrfrm.Rows.Cast<DataRow>().CopyToDataTable();
}
答案 1 :(得分:1)
确保您的DataTable
包含要复制的所有列。请注意ColumnName
DataTable
以及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;
}
答案 2 :(得分:0)
您需要查看将DataTable对象绑定到DatagridView。
您可以使用BindingSource执行此操作: -
http://msdn.microsoft.com/en-gb/library/system.windows.forms.bindingsource.aspx
希望这有帮助。
答案 3 :(得分:0)
一篇文章演示了如何从GridView获取数据以及如何将其存储到DataTable中。看看下面的资源
答案 4 :(得分:0)
我试过这个......可能这个帮助你......
第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获取数据并将其存储到DataTable中。
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(new System.Data.DataColumn(“BookName”,typeof(String)))中,您可以为该列编写任何标题文本。
将此函数调用到要将GridView数据存储到DataTable中的位置。