【发布时间】:2019-06-22 03:33:56
【问题描述】:
我按照Adding new row to datatable's top 添加了空行,但即使我的索引为 0,它仍然不会在我的数据表的标题上方添加空行。
我试过了
DataRow 空白行 = dt.NewRow(); dt.Rows.InsertAt(blankRow, 0);
这是我的代码
public void filldatagridview(ExcelWorksheet workSheet)
{
DataTable dt = new DataTable();
//Create the data column
for (int col = workSheet.Dimension.Start.Column; col <= workSheet.Dimension.End.Column; col++)
{
dt.Columns.Add(col.ToString());
}
for (int row = 12; row <= 26; row++)
{
DataRow newRow = dt.NewRow(); //Create a row
int i = 0;
for (int col = workSheet.Dimension.Start.Column; col <= workSheet.Dimension.End.Column; col++)
{
newRow[i++] = workSheet.Cells[row, col].Text;
}
dt.Rows.Add(newRow);
}
dt.Columns.RemoveAt(0); //remove No
dt.Columns.RemoveAt(0); //remove article
//Get BookCode
using (SqlConnection conn = new SqlConnection("Server con.."))
using (SqlCommand cmd = new SqlCommand(null, conn))
{
StringBuilder sb = new StringBuilder("SELECT InvtID AS BOOKCODE FROM InventoryCustomer WHERE Barcode In (");
for (int i = 0; i < dt.Rows.Count; i++)
{
if (i != 0) sb.Append(",");
string name = "@P" + i;
cmd.Parameters.AddWithValue(name, dt.Rows[i]["3"]);
sb.Append(name);
}
sb.Append(")");
cmd.CommandText = sb.ToString();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
dt.DefaultView.Sort = "BOOKCODE";
dt = dt.DefaultView.ToTable();
dt.Columns["BOOKCODE"].SetOrdinal(0);
dataGridView2.DataSource = dt;
}
}
private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
【问题讨论】:
-
运行它会发生什么?
-
您不能在标准控件的标题上方添加新行。为此,您需要另一个(自定义/第三方)控件。
-
@Ben 我的程序将 excel 文件读入数据表。那行代码只在标题下方添加空行,而不是在标题上方添加我想要的
-
@Julo 你能举个例子吗?
-
@Nebula9:什么例子?如何创建具有请求功能的自定义控件?这代码太多了。或第三方控制。对不起,我不知道名字。我只知道它们存在,但我发现只有付费的,或者使用不兼容的许可证(这意味着我不能在我的项目中使用它们)。但主要问题是:为什么需要在标题上方有一行?你真的需要在标题上方有一行吗?不能用其他方法解决吗?例如移动控件并在其上方放置另一个控件(例如
TextLabel)。有很多方法可以解决它,但只有你知道你需要什么。