存在数据源的时候,就需要用到DataTable
1
2
3
4
5
6
7
8
9
10
11
DataTable dt = this.GridView1.DataSource as DataTable
DataRow dr = dt.NewRow()
//也就是说存在数据源时候需要是同DataTable获取当前的绑定数据,然后DataTable新增一行空值的行再次绑定就OK
//不存在数据源也可以这么做
//或者这个
protected void Button1_Click(object sender, EventArgs e)
{
this.SqlDataSource1.Insert()
this.GridView1.DataBind()
}
请问,这样做的目的是什么,有什么意义?就算一行一行的添加数据,那也是需要绑定数据源的,要实现逐行添加数据不是不可以实现,只是真的没明白为啥要这样做。。。
比如下面代码:
//定义数据源 table
public static DataTable Cpdt
//页面加载
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Cpdt = new DataTable()
Createbt()
GridView1.DataSource = Cpdt
GridView1.DataBind()
}
}
//根据自己需求创建表
void Createbt()
{
DataColumn mycol = new DataColumn()
Cpdt.Columns.Add(new DataColumn("CPID", typeof(Int32)))
Cpdt.Columns.Add(new DataColumn("CPNAME", typeof(String)))
Cpdt.Columns.Add(new DataColumn("CPDJ", typeof(Single)))
Cpdt.Columns.Add(new DataColumn("SL", typeof(Int32)))
Cpdt.Columns.Add(new DataColumn("CPSUM", typeof(Double)))
Cpdt.AcceptChanges()
Cpdt.PrimaryKey = new DataColumn[] { Cpdt.Columns[0] }
Cpdt.AcceptChanges()
}
//比如点击button的时候添加一条数据
protected void Button1_Click(object sender, EventArgs e)
{
DataRow myrow = Cpdt.NewRow()
if (Cpdt.Rows.Count==0)
{
myrow[0] = 1
}
else
{
myrow[0] = int.Parse(Cpdt.Rows[Cpdt.Rows.Count-1][0].ToString()) + 1
}
myrow[1] = 2
myrow[2] = 3
myrow[3] = 4
Cpdt.Rows.Add(myrow)
var mm = Cpdt.AsEnumerable().Sum(p =>Convert.ToDouble(p["SL"]))
//Label3.Text = mm.ToString()
Cpdt.AcceptChanges()
GridView1.DataSource = Cpdt
GridView1.DataBind()
}
看你是要插入到最后还是中间了,最后的话有newRow方法,中间的话我所知道的只有改写数据源了,还有进行 *** 作是对gridcontrol内的GridView进行 *** 作。1. 将NewItemRowPosition属性设置为Top或Bottom,在这样的新行中输入数据后,会自动添加到绑定的数据源中的,如果你希望在按回车时焦点跳至下一列,只需要设置GridView的OptionNavigations->EnterMoveNextColumn为True即可。
2. 当在最后一可见列按回车,数据自动在GridView中显示出来。很多时候我们真的只想单纯的手动添加一行数据,而不想修改数据源再回来绑定。如果你有这种想法。
3. 我已经两次遇到过这样的问题,尝试手动添加,整整两天时间都没有成功。网上说的方法基本都是绑定数据源,偶尔有人说用SetRowCellValue方法,用法如下:gridView1.SetRowCellValue(0, gridView1.Columns[0], "qwe")。
4. 即在0行0列的单元格设为qwe值,看起来多好,可问题是它就是不显示,更改了无数属性都无法生效,真怀疑是不是dev公司把这个方法取消了,如果哪位使用了这个方法成功的添加了数据,那么请通知我一下,万分感谢。
5. 所以如果各位初学者看到了我这篇文章就不要花时间去用上述方式添加了(当然时间多时可以试试),就我得出的结论是gridcontrol添加数据的方法只能去修改数据源。
6. gridcontrol数据源也分两种,datetable和list,datetable想要添加一行数据可以new一个新行,分别设定各列的值,再将新行add到datetable;list则new一个新的实例,设置各字段的值,再add到list即可。详细方法网上太多,不在此赘述。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)