我想动态创建一个标签,后来填充了数据集中的数据。 在我的数据集中,我有一个名为TabId的字段。它用作标题和id,稍后(在标签视图上)用于迭代它提取的数据集。由于将来可能会有更多选项卡,并且客户希望解决方案需要尽可能少的更新,我需要动态创建它们。但问题是包含我的标签数据的数据集包含在迭代表格时多次重复的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循环,但每个不同的\唯一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);
我希望自己足够清楚。如果出现任何问题,请不要犹豫。我将提供尽可能多的信息。
答案 0 :(得分:2)
使用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);
}