
sqlDataAdapter adapter = new sqlDataAdapter(Datenbank.cmd); dataSet1.tables.Clear(); adapter.Fill(dataSet1,"table"); bs = new BindingSource(); bs.DataSource = dataSet1.tables["table"]; dataGrIDVIEw1.DataSource = bs;
现在我对它进行排序:
bs.sort = "customer DESC";
现在我想在0处添加新行
dataSet1.tables[0].Rows.InsertAt(newRow,0);
但是,它不会插入位置0
删除位置x的类似问题 – 这里已经解决了
>> stack overflow question
想到使用bs.insert(0,newRow),但它说外部对象无法添加到此列表中
如何在排序后在给定位置的bindingsource中添加一行?
解决方法 这是一个解决方案,可以添加到列表的顶部 – 我不知道它是否是最好的解决方案,但它的工作原理.有很多其他方法可以解决这个问题,包括制作允许插入排序列表的自己的绑定集合,从而可以从某些观点提供更好的代码,但这至少很简单.这是代码,包括创建数据表.
public partial class Form1 : Form{ BindingSource bs; Datatable dt; public Form1() { InitializeComponent(); dt = new Datatable("Customers"); DataColumn dc; dc = new DataColumn(); dc.DataType = typeof(int); dc.Columnname = "CustomerID"; dt.Columns.Add(dc); dt.Columns.Add(new DataColumn("Lastname")); dt.Columns.Add(new DataColumn("Firstname")); // Concatenation of first and last names dt.Columns.Add(new DataColumn("Fullname")); dt.Columns.Add(new DataColumn("Address")); dt.Columns.Add(new DataColumn("City")); dt.Columns.Add(new DataColumn("State")); dt.Columns.Add(new DataColumn("Zip")); dt.Columns.Add(new DataColumn("Phone")); dc = new DataColumn(); dc.DataType = typeof(DateTime); dc.Columnname = "LastPurchaseDate"; dt.Columns.Add(dc); dc = new DataColumn(); dc.DataType = typeof(int); dc.Columnname = "CustomerType"; dt.Columns.Add(dc); dt.Columns.Add("HIDdenSort",typeof(bool)); // Populate the table dt.Rows.Add(2,"Baggins","Bilbo","Baggins,Bilbo","Bagshot Row #1","Hobbiton","SH","00001","555-2222",DateTime.Parse("9/9/2008"),1,false); dt.Rows.Add(1,"Frodo",Frodo","Bagshot Row #2","555-1111",false); dt.Rows.Add(6,"Bolger","Fatty","Bolger,Fatty","ProudFeet Creek",1); dt.Rows.Add(4,"Elessar","aragorn","Elessar,aragorn","Citadel","Minas Tirith","Gondor","00000","555-0000",4,false); dt.Rows.Add(5,"Evenstar","Arwin","Evenstar,Arwin","555-0001",false); dt.Rows.Add(3,"Greyhame","Gandalf","Grayhame,Gandalf",dbnull.Value,3,false); BindingSource bs = new BindingSource(); bs.DataSource = dt; dataGrIDVIEw1.DataSource = bs; dataGrIDVIEw1.Columns["HIDdenSort"].Visible = false; dataGrIDVIEw1.sorted += new EventHandler(dataGrIDVIEw1_Sorted); } voID dataGrIDVIEw1_Sorted(object sender,EventArgs e) { foreach (DaTarow dr in dt.Rows) { dr["HIDdenSort"] = false; } } private voID button1_Click(object sender,EventArgs e) { DaTarow dr = dt.Rows.Add(2,"Testing",true); DataVIEw dv = dt.defaultview; if (dataGrIDVIEw1.sortedColumn == null) { dv.sort = "[HIDdenSort] desc"; } else { string sortname = dataGrIDVIEw1.sortedColumn.name; dv.sort = "[HIDdenSort] desc,[" + sortname + "] asc"; } }} 这里的技巧是向数据表中添加一个新列HIDdenSort,它允许我们根据行是否为新来对数据表进行排序.再加上从DataGrIDVIEw中获取sort列,可以保留旧的排序顺序并保持新行的位置.
总结以上是内存溢出为你收集整理的如何在排序后在给定位置的bindingsource中添加一行? C#全部内容,希望文章能够帮你解决如何在排序后在给定位置的bindingsource中添加一行? C#所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)