求助: 冒泡排序问题!~~~~~~~~~~~~~~ 我写了一个为DataTable中的时间一列以冒泡法排序,有A,B,temp,如果A>B,那么,temp=A,A=B,B=temp;但是,在进行到A=B时,temp也一起变成了B,请问名位应该如何解决啊? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 DataRow a = Table1.Rows[0];DataRow temp = a;DataRow b = temp;//上面3行实际上是同一行把引用类型赋值给一个变量,获得的是这个对象本身 this.dt = (DataTable)ViewState["dt"]; int i,j;DataRow temp = dt.NewRow(); j=1; while((j<dt.Rows.Count)) { for(i=0;i<dt.Rows.Count-j;i++) { if(dt.Rows[i]["checkdate"].ToString() == "") { this.dt.Rows[i]["checkdate"] = Convert.ToDateTime("1900-01-01 01:01:01"); } if(dt.Rows[i+1]["checkdate"].ToString() == "") { this.dt.Rows[i+1]["checkdate"] = Convert.ToDateTime("1900-01-01 01:01:01"); } if(Convert.ToDateTime(dt.Rows[i]["checkdate"]).CompareTo(Convert.ToDateTime(dt.Rows[i+1]["checkdate"])) < 0) { temp=dt.Rows[i]; dt.Rows[i]["bianhao"]=dt.Rows[i+1]["bianhao"]; dt.Rows[i]["registerdate"]=dt.Rows[i+1]["registerdate"]; dt.Rows[i+1]["bianhao"]=temp["bianhao"]; dt.Rows[i+1]["registerdate"]=temp["registerdate"]; } } j++; } this.DataGrid1.DataSource = dt; this.DataGrid1.DataBind();}这是代码!~~~~~~~~~~ 不用temp的话写入下代码a=a+bb=a-ba=a-b 实不理解为什么兄弟这么想?DATAGrid中有按照某字段排序的SortException这个可以实现你想要的效果吧?,如果实现不了,那把DataTable.Defaultview来操作,有RowFilter 没办法才这样做的,因为我在这个部分的代码不止这一点,我怕贴出来把大家吓坏了,所以在这里贴的是剪了一部分的代码.我原本也是用DataGrid自带的排序功能的,可是不知道为什么,我改了好多次,它每次排的时间都排的乱七八糟,所以才出此下策!~ temp=dt.Rows[i];改成temp=dt.NewRow()temp["bianhao"]=dt.Rows[i]["bianhao"]; temp["registerdate"]=dt.Rows[i]["registerdate"]; 试试看。temp=dt.Rows[i];实际上,temp和dt.Rows[i]应该是一个东西,是统一行,改一个,另外一个自然跟着改了。 回复:skywind_jk(天风) 谢谢,此问题已经解决了,是因为要强制把dt.row.DataType设置为dateTime型的,光用convert.to()有时不是很管用.谢谢您的关注!~ 此问题已结决于http://community.csdn.net/Expert/TopicView.asp?id=5226556 freetextbox 绑定treeview 急急急急急急急急急!~~~ 设计权限精确到页面上的按钮 SQL模糊搜索问题 请教一下.net Framework3.5装时要下载的什么东西,它是在那点下地 高手近近近!!!!!! 求书下载 《COM与.NET组件服务》 和 《NET与设计模式》 ,100分敬上 初学者问:怎么样改变弹出式WEB页面的大小以及如何启用域验证? 在加100高分解决该问题~~~~~~~~~~~期待高手的出现 哪位大虾能给偶一份用DataGrid取大类然后取与大类相关的小类的代码! 怎么注册.net2.0 能否为一个Asp.net2.0开发的网站指定多个执行目录(Bin)
DataRow temp = a;
DataRow b = temp;//上面3行实际上是同一行
把引用类型赋值给一个变量,获得的是这个对象本身
int i,j;
DataRow temp = dt.NewRow();
j=1;
while((j<dt.Rows.Count))
{
for(i=0;i<dt.Rows.Count-j;i++)
{
if(dt.Rows[i]["checkdate"].ToString() == "")
{
this.dt.Rows[i]["checkdate"] = Convert.ToDateTime("1900-01-01 01:01:01");
}
if(dt.Rows[i+1]["checkdate"].ToString() == "")
{
this.dt.Rows[i+1]["checkdate"] = Convert.ToDateTime("1900-01-01 01:01:01");
}
if(Convert.ToDateTime(dt.Rows[i]["checkdate"]).CompareTo(Convert.ToDateTime(dt.Rows[i+1]["checkdate"])) < 0)
{
temp=dt.Rows[i];
dt.Rows[i]["bianhao"]=dt.Rows[i+1]["bianhao"];
dt.Rows[i]["registerdate"]=dt.Rows[i+1]["registerdate"];
dt.Rows[i+1]["bianhao"]=temp["bianhao"];
dt.Rows[i+1]["registerdate"]=temp["registerdate"];
}
}
j++;
}
this.DataGrid1.DataSource = dt;
this.DataGrid1.DataBind();
}这是代码!~~~~~~~~~~
a=a+b
b=a-b
a=a-b
temp=dt.NewRow()
temp["bianhao"]=dt.Rows[i]["bianhao"];
temp["registerdate"]=dt.Rows[i]["registerdate"];
试试看。temp=dt.Rows[i];实际上,temp和dt.Rows[i]应该是一个东西,是统一行,改一个,另外一个自然跟着改了。
谢谢,此问题已经解决了,是因为要强制把dt.row.DataType设置为dateTime型的,光用convert.to()有时不是很管用.谢谢您的关注!~
http://community.csdn.net/Expert/TopicView.asp?id=5226556