重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
根据你的语句,上下标是确定的,所以定义语句修改为:
创新互联建站专业为企业提供嫩江网站建设、嫩江做网站、嫩江网站设计、嫩江网站制作等企业网站建设、网页设计与制作、嫩江企业网站模板建站服务,十年嫩江做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
Dim ary(UBound(temp), 1) As String '声明二维数组
将二位数组转成DataTable,网上找的不知道成不成
public static DataTable ConvertToDataTable(string[,] arr)
{
DataTable dataSouce = new DataTable();
for (int i = 0; i arr.GetLength(1); i++)
{
DataColumn newColumn = new DataColumn(i.ToString(), arr[0, 0].GetType());
dataSouce.Columns.Add(newColumn);
}
for (int i = 0; i arr.GetLength(0); i++)
{
DataRow newRow = dataSouce.NewRow();
for (int j = 0; j arr.GetLength(1); j++)
{
newRow[j.ToString()] = arr[i, j];
}
dataSouce.Rows.Add(newRow);
}
return dataSouce;
}
1,继承DataGridView,添加表头信息类。
2,添加CellPainting,代码如下:
private void DataGridViewEx_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == -1)
{
// int w = dataGridView1.HorizontalScrollingOffset + dataGridView1.TopLeftHeaderCell.Size.Width + dataGridView1.Columns[0].Width + 10;
Rectangle newRect = new Rectangle(e.CellBounds.X + 1,
e.CellBounds.Y + 1, e.CellBounds.Width - 4,
e.CellBounds.Height - 4);
using (
Brush gridBrush = new SolidBrush(this.GridColor),
backColorBrush = new SolidBrush(e.CellStyle.BackColor))
{
using (Pen gridLinePen = new Pen(gridBrush))
{
// Erase the cell.
e.Graphics.FillRectangle(backColorBrush, e.CellBounds);
// Draw the grid lines (only the right and bottom lines;
// DataGridView takes care of the others).
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left,
e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,
e.CellBounds.Bottom - 1);
if (e.ColumnIndex -1 topRow!=nulltopRow.Cells[e.ColumnIndex].ColSpan1)
{
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,
e.CellBounds.Top + e.ClipBounds.Height / 2, e.CellBounds.Right - 1,
e.CellBounds.Bottom);
}
else
{
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,
e.CellBounds.Top, e.CellBounds.Right - 1,
e.CellBounds.Bottom);
}
// Draw the inset highlight box.
// e.Graphics.DrawRectangle(Pens.Blue, newRect);
int scale = e.CellBounds.Height/3;
if (e.ColumnIndex -1 topRow.Cells[e.ColumnIndex].Text != null)
{
scale= e.CellBounds.Height / 2;
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - e.CellBounds.Height / 2, e.CellBounds.Right, e.CellBounds.Bottom - e.CellBounds.Height / 2);
}
// Draw the text content of the cell, ignoring alignment.
if (e.Value != null)
{
e.Graphics.DrawString(e.Value.ToString(), e.CellStyle.Font,
Brushes.Crimson, e.CellBounds.X + 2,
e.CellBounds.Y + scale+ 2, StringFormat.GenericDefault);
}
if (e.ColumnIndex -1 topRow.Cells[e.ColumnIndex].RelateIndex -1 topRow.Cells[e.ColumnIndex].Text!=null)
{
Rectangle recCell = new Rectangle(e.CellBounds.X - 1 - topRow.Cells[e.ColumnIndex].SpanRowWith,
e.CellBounds.Y + 1, topRow.Cells[e.ColumnIndex].SpanRowWith,
e.CellBounds.Height / 2);
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
e.Graphics.DrawString(topRow.Cells[e.ColumnIndex].Text, e.CellStyle.Font, Brushes.Crimson, recCell, sf);
}
e.Handled = true;
}
}
}
}
3,调用方法
dataGridViewEx1.TopRow.Cells[2].Text = "入库";
dataGridViewEx1.TopRow.Cells[2].ColSpan = 2;
dataGridViewEx1.TopRow.Cells[4].Text = "出库";
dataGridViewEx1.TopRow.Cells[4].ColSpan = 2;4,效果图
至于表尾合计,也做出了原型。二维表头+表尾合计,基本上满足需求了。
for i =0 to ...
for j =0 to ...
keyarray(i,j)=
next
next
双重循环,赋值和读取一样
这个比较简单
假如二维数组是str(row,col)
假设Workbook是Excel的工作簿对象
Workbook.worksheets(1).range("A2").Resize(row+1, col+1).Value = str
其中关键的是Excel的Resize方法能快速的插入二维数组
执行存储过程调用的是ADO.net
返回的结果集是一个DataSet对象。 如果不是,请检查下你的数据连接库,改下代码。
如果存储过程返回的是两个结果集,那么返回的DataSet就有两个DataTable对象。
调用的时候 只需要
DataSet ds=dbHelper.RunProcedure("Web_pGetDataPager");//假设的返回dataset对象的执行存储过程的方法。
ds.Tables[0] 就是第一个结果集
ds.Tables[1] 就是第二个结果集
//弱绑定第二个结果集 就是下面这样
Datagridview.DataSource=ds.Table[1];
Datagridview.DataBind();