以下是我如何从数据库获取数据并将其添加到DataTable命名数据的代码, 我必须使用界面(越来越多)按行“Spelionu skaicius”的数据对所有表进行排序,但我不知道如何实现这一点,有人可以帮助吗? 我知道有很多方法可以对此进行排序,但我必须使用界面进行此操作。
using (FbConnection fbBD = new FbConnection(csb.ToString()))
{
fbBD.Open();
FbTransaction transact = fbBD.BeginTransaction();
FbCommand sqlReq =
new FbCommand("SELECT vardas,pavarde,sp_skaicius,spelioniu_sk FROM zaidejai WHERE atspetas='Taip'", fbBD, transact);
using (FbDataReader r = sqlReq.ExecuteReader())
{
while (r.Read())
{
DataRow rw = dt.NewRow();
rw["Vardas"] = r.GetString(0);
rw["Pavarde"] = r.GetString(1);
rw["Skaicius"] = r.GetValue(2);
rw["Spelionu skaicius"] = r.GetValue(3);
data.Rows.Add(rw);
}
}
transact.Commit();
fbBD.Close();
}
P.S。抱歉我的英文
答案 0 :(得分:1)
使用数据表DefaultView属性:
data.DefaultView.Sort = "Spelionu skaicius";
然后您可以使用data.DefaultView(数据视图)或者如果您需要数据表,您可以这样做:
data = data.DefaultView.ToTable();
< - EDIT - >
以上是定期排序。如果要使用IComparable,则必须使用自定义clases而不是DataTable。 Here解释了如何。
答案 1 :(得分:1)
最好让数据库对数据进行排序,相反,我会将您的选择更改为:
SELECT vardas,pavarde,sp_skaicius,spelioniu_sk
FROM zaidejai
WHERE atspetas='Taip'
ORDER BY spelioniu_sk
请注意,我使用了spelioniu_sk,因为这是select中列出的第4列,然后在数据表定义中映射到Spelionu skaicius
如果在从数据库获取数据后仍然必须对数据表进行排序(可能是以不同的顺序),则可以使用DataTable的DataView原理:
data= data.DefaultView.Sort = "`Spelionu skaicius` ASC";
OR
data = data.DefaultView.Sort = "`Spelionu skaicius` DESC";
取决于您需要排序的顺序。
注意:我不确定上面的Sort Expression是否可以正常工作。由于您决定在中间用空格命名列,您可能需要将两个单词括在反引号中(如上所述)或方括号(例如[Spelionu skaicius] ASC
)