用datagridview绑定数组后无法编辑,这是为什么

gunziyang 2013-05-24 04:59:17
自己写一个小例子,datagridview直接绑定datatable,可以实现增删改;直接绑定类stringArray数组,则在Form中无法编辑(即点击单元格不能进入编辑状态),也无法增删,请问这是为什么,代码如下:


public partial class Form1 : Form
{
private DataTable routerDataTable;
private BindingSource bs = new BindingSource();
// DataGridView绑定显示的是第一公共属性,所以结构体不能作为绑定对象,只有类才有属性
private class stringArray
{
private string s;

public string S
{
get { return s; }
}

public stringArray(string sa)
{
s = sa;
}
}

private stringArray[] sa = new stringArray[] { new stringArray("a"), new stringArray("b") };



public Form1()
{
InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)
{

}

private void buttonBind_Click(object sender, EventArgs e)
{
routerDataTable = DbHelperOleDb.QueryDataTable("select * from router");
dataGridView1.DataSource = routerDataTable;

}



// 删除一行的话必须先选中那一行,然后再按delete键
private void saveButton_Click(object sender, EventArgs e)
{
using (OleDbConnection connection = new OleDbConnection(DbHelperOleDb.connectionString))
{
OleDbDataAdapter da = new OleDbDataAdapter("select * from router", connection);
OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
da.Update(routerDataTable);
}
}

private void buttonBindArray_Click(object sender, EventArgs e)
{


bs.DataSource = sa;

dataGridView1.DataSource = bs;
}




}


...全文
254 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gunziyang 2013-05-27
  • 打赏
  • 举报
回复
引用 2 楼 laipihu 的回复:
代码木有问题,是不是ReadOnly = true了
ReadOnly为false
gunziyang 2013-05-27
  • 打赏
  • 举报
回复
引用 1 楼 gomoku 的回复:
因为数组本身无法增删。 建议你绑定到BindingList<string>
绑定到BindingList依然不能增删改
gunziyang 2013-05-27
  • 打赏
  • 举报
回复
自己顶一个,这是怎么回事啊
laipihu 2013-05-24
  • 打赏
  • 举报
回复
代码木有问题,是不是ReadOnly = true了
gomoku 2013-05-24
  • 打赏
  • 举报
回复
因为数组本身无法增删。 建议你绑定到BindingList<string>

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧