你这是……
ArrayList 是二维集合,这没错,它的每一项可以是Int string 任何值类型和引用类型,
datagridViewDataSource也接收的是二维集合类型
这个二维集合类型必须符合一定条件
1,必须是行列式数据,这个不必说
2,没一列必须有明显的列名称
符合这个条件的有 datatable dataset会默认取第一个(因为又多了一维),还有List<实体>、IList<实体>
arraylist只是个一维集合,可以这么说,他只有一行数据,而且没有明显的列说明。arraylist适合绑下拉菜单这种一维的,但是也需要枚举转换才能添加上。
所以说arraylist绑dataGridView 是没有什么意义的
你应该数据库读取出datatable 来绑,或者自定义datatable
/// <summary>
/// 初始化下拉列表框
/// </summary>
private void InitDGVComboBox(DataGridView dgv, ComboBox cbx)
{
m_CbxHelperBindWeldProcesses(cbx); //绑定数据源到ComboBox
dgvControlsAdd(cbx); //将ComboBox 添加到dgv
}
//激活某单元格
private void dgvDetail21_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (eColumnIndex == 2)
{
lastCbxRowIndex = eRowIndex;
lastCbxColIndex = eColumnIndex;
DisplayComboxOnCell(dgvDetail21, cbxWeldingProcess, eRowIndex, eColumnIndex);
}
}
//离开某单元格
private void dgvDetail21_CellLeave(object sender, DataGridViewCellEventArgs e)
{
UpdateComboBoxCellValue(dgvDetail21, cbxWeldingProcess, eRowIndex, eColumnIndex);
}
/// <summary>
/// 在制定的单元格显示下拉列表
/// </summary>
private void DisplayComboxOnCell(DataGridView dgv, ComboBox cbx, int rowIndex, int colIndex)
{
DataGridViewCell cell = dgvRows[rowIndex]Cells[colIndex];
Rectangle rect = dgvGetCellDisplayRectangle(cellColumnIndex, cellRowIndex, false);
cbxLocation = rectLocation;
cbxSize = rectSize;
//根据单元格值,设置ComboBox当前选定值
m_CbxHelperMatchComboBoxValue(cbx, cellValueToString());
cbxVisible = true;
}
/// <summary>
/// 更新下拉列表所在单元格值
/// </summary>
private void UpdateComboBoxCellValue(DataGridView dgv, ComboBox cbx, int rowIndex, int colIndex)
{
if (colIndex == 2)
{
DataGridViewCell cell = dgvRows[rowIndex]Cells[colIndex];
if (cellValue != null && cellValueToString() != cbxText)
{
cellValue = cbxText;
}
cbxVisible = false;
}
}
dataGridView
绑定数据源(表)字段属性为DataPropertyName
自定义列名称属性:HeaderText
动态生成列及属性设置:
thisdgvGoodsInfoDataSource
=
dt;
thisdgvGoodsInfoColumnsClear();
DataGridViewTextBoxColumn
dtInfo
=
new
DataGridViewTextBoxColumn();
dtInfoDataPropertyName
=
"sID";
dtInfoHeaderText
=
"编号";
thisdgvGoodsInfoColumnsAdd(dtInfo);
DataGridViewTextBoxColumn
dttruename
=
new
DataGridViewTextBoxColumn();
dttruenameDataPropertyName
=
"sName";
dttruenameHeaderText
=
"名称";
thisdgvGoodsInfoColumnsAdd(dttruename);
绑定数据库例子:
private
DataSet
GetDataset()
{
String
str="Data
Source=你的数据源,uid=你的数据库用户名,pwd=你的密码,database=你的数据库名字";
String
sql="select
from
表名";
SqlConnection
con
=
new
SqlConnection(str);
SqlCommand
cmd
=
new
SqlCommand(sql,con);
SqlDataAdapter
da
=
new
SqlDataAdapter(sql,con);
conOpen();
DataSet
ds
=
new
DataSet();
daFill(ds);
DataTable
dt;
dt=dsTables[0]Copy();
DataGridView1DataSource=dt;
}
请确定你究竟是不是在使用VBNET。看你的
,是在使用VB。VB中不建议使用ADO的,而是使用ADONET,我给你
伪代码
,你自己可以考虑一下: SqlDataAdapter
adapter
=
new
SqlDataAdapter("select语句",new
SqlConnection("数据库字符连接"))DataTable
dt
=
new
DataTable()adapterFill(dt)DGV_GJCXDataSource
=
dt
这个很简单的!你在Form中加两个控件,一个DataGridView和一个bindingNavgint,在bindingNavgint中添加3个toolStripButton按钮Text属性改为更新,删除。第一就是DataGridView连接数据库!
现在名控件中加 using SystemDataOleDb;
代码在Form_Load中的代码是:OleDbConnection con=new OleDbConnection("Provider=MicrosoftJetOleDb40;DataSource=D://路径");
OleDbCommand cmd = new OleDbCommand("Select from 表名",con);
DataTable dt=new DataTable();
daSelectCommand = cmd;
daFill(dt);
conClose();
dgvDataSource = dt;
BindingSource bind = new BindingSource();
bindDataSource = dgvDataSource;
bindingNavigator1BindingSource = bind;
if (dtRowsCount > 0)
tsBtnDeleteVisible = true;
else
tsBtnDeleteVisible = false;
更新代码:
try
{
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
daUpdate(dt);
}
catch (Exception ex)
{
MessageBoxShow(exToString());
return;
}
MessageBoxShow("更新成功!");
删除代码:
dgvRowsRemoveAt(dgvCurrentRowIndex);
每次添加,修改,删除完了之后都点一下更新按钮就自定保存到数据库了 下次调用就会显示在DataGridView中了 dgv就是DataGridView。我说的够详细了。
以上就是关于arraylist与datagridview数据绑定 看问题补充全部的内容,包括:arraylist与datagridview数据绑定 看问题补充、怎么把数据绑定到DataGridView中的ComboBox上并显示出来、C#中关于dataGridView的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)