C#将数据集中的数据插入datagridview
数据库中有3行数据。我首先将这些数据加载到数据集中,但未能将这3行加载到dgvCustListing中。它只加载最后一个数据,顶部有3个空格。有人能指出我的错误吗 多谢各位C#将数据集中的数据插入datagridview,c#,datagridview,dataset,C#,Datagridview,Dataset,数据库中有3行数据。我首先将这些数据加载到数据集中,但未能将这3行加载到dgvCustListing中。它只加载最后一个数据,顶部有3个空格。有人能指出我的错误吗 多谢各位 private void LoadCustListing() { string sQuery = string.Empty; int rowcount = 0; dgvCustListing.Rows.Clear(); string spartyConn
private void LoadCustListing()
{
string sQuery = string.Empty;
int rowcount = 0;
dgvCustListing.Rows.Clear();
string spartyConn = ProcessData.GetpartyConnStr();
using (SqlConnection Conn = new SqlConnection(spartyConn))
{
try
{
Conn.Open();
SqlCommand Cmd = new SqlCommand();
Cmd.Connection = Conn;
Cmd.CommandTimeout = 1000;
sQuery = "select pd.Party_Id, pd.Outlet_StoreNo, 'storename', pd.Party_Date, 'time', bc.Child_Name, pd.Party_Status "
+ "from Party_Dtl pd inner join Bday_Child bc "
+ "on pd.Child_Id = bc.Child_Id "
+ "inner join Cust_Dtl cd "
+ "on bc.Parent_Id = cd.Parent_Id "
+ "where pd.Party_Status = 'open' ";
Cmd.CommandText = sQuery.ToString();
SqlDataAdapter ExportAdapter = new SqlDataAdapter(sQuery, Conn);
ExportAdapter.SelectCommand.CommandTimeout = 10000;
DataSet DSCust_Listing = new DataSet();
ExportAdapter.Fill(DSCust_Listing, "Cust_Listing");
foreach (DataRow DSRow in DSCust_Listing.Tables["Cust_Listing"].Rows)
{
rowcount += 1;
dgvCustListing.Rows.Add();
dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[0].Value = rowcount;
dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[2].Value = DSRow["Outlet_StoreNo"];
dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[3].Value = "storename";//DSRow["Outlet"];
dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[4].Value = DateTime.Parse(DSRow["Party_Date"].ToString());
dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[5].Value = "time";//DSRow["Party_Time"]; //Time + AMPM
dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[6].Value = DSRow["Child_Name"];
dgvCustListing.Rows[dgvCustListing.RowCount - 1].Cells[7].Value = DSRow["Party_Status"];
}
}
catch (Exception ex)
{
if (ex.Message != "Exception from HRESULT: 0x800A03EC")
{
}
}
finally
{
Conn.Close();
}
}
}
我认为你应该使用
dgvCustListing.Rows[rowcount-1]=
。。我认为为了迭代集合并逐行添加,为什么不使用如下绑定
dgvCustListing.AutoGenerateColumns = true;
dgvCustListing.DataSource = DSCust_Listing; // is your dataset
dgvCustListing.DataMember = "Cust_Listing"; // is your table name to bind
因为只有一个查询要执行,所以不需要使用数据集,而是可以使用适配器将结果填充到数据表中。让
DTCust_Listing
成为该数据表,然后您可以将其指定为dgvCustListing的DataSource
,我认为您不需要数据集。数据集是表集合的内存表示形式。您可以改为使用DataTable
声明一个数据表
DataTable DSCust_Listing = new DataTable();
不要在数据集中循环,只需执行以下操作
if(DSCust_Listing != null)
{
dgvCustListing.DataSource = DSCust_Listing;
dgvCustListing.DataBind();
}
应该可以。您好,我试过了,但出现了以下错误:错误19'System.Windows.Forms.DataGridView'不包含'DataBind'的定义,并且找不到接受'System.Windows.Forms.DataGridView'类型的第一个参数的扩展方法'DataBind'。(是否缺少using指令或程序集引用?)