动态选项卡:使用数据集添加选项卡并检查它们是否存在

本文关键字:选项 检查 存在 是否 数据集 动态 添加 | 更新日期: 2023-09-27 18:02:10

我想动态创建一个选项卡,稍后用数据集中的数据填充该选项卡。在我的数据集中,我有一个名为TabId的字段。它用作标题和id,稍后(在选项卡视图上)用于迭代它获取的数据集。因为在未来可能会有更多的选项卡和客户端想要一个解决方案,需要尽可能少的更新数量,我需要动态地创建它们。但问题是包含我的选项卡数据的数据集包含tabId,该tabId在您迭代表时重复了几次。

的例子:

Rec 1 TabId = first
Rec 2 TabId = first
Rec 3 TabId = first
Rec 4 TabId = first
Rec 5 TabId = first
Rec 6 TabId = first
Rec 7 TabId = first
Rec 8 TabId = Second
Rec 9 TabId = Second
Rec 10 TabId = Second
Rec 11 TabId = Third
Rec 12 TabId = Third
Rec 13 TabId = Third

等等…

所以基本上我知道我需要使用TabId进行foreach循环,但我只需要一个标签每个独特的'unique id。我该如何遍历我的数据集并处理TabId的额外副本,以便我以后可以使用它来动态地创建我的选项卡?

我当前的(静态)代码:

intent = new Intent(this, typeof(Tab1));
intent.PutExtra("FormId", FormId);
intent.PutExtra("TabNum", TabId);
intent.PutExtra("EventNo", EventNo);
intent.PutExtra("Ticket", Ticket);
intent.PutExtra("DataSet", xml);
intent.AddFlags(ActivityFlags.NewTask);
// Initialize a TabSpec for each tab and add it to the TabHost  
spec = TabHost.NewTabSpec(TabId); // unique per tab
spec.SetIndicator(TabId); // unique per tab
spec.SetContent(intent);
TabHost.AddTab(spec);
我希望我说得够清楚了。如果有任何问题,不要犹豫,尽管问。我将提供尽可能多的信息。

动态选项卡:使用数据集添加选项卡并检查它们是否存在

使用Linq获取不同的List并查询原始数据源

var tabIDs = (from DataRow dr in dataTable.Rows
         select (Int32)dr["TabID"]).Distinct();

从数据集:

var tabIDs = (from DataRow dr in dataSet.Tables["tableName"].Rows
         select (Int32)dr["TabID"]).Distinct();

然后遍历TabID的

foreach(Int32 tabID in tabIDs){
    spec = TabHost.NewTabSpec(tabID ); // unique per tab
    spec.SetIndicator(tabID ); // unique per tab
    spec.SetContent(intent);
    TabHost.AddTab(spec);
}