2012-11-29 44 views
0

我有一個DataTable。我需要從DataTable獲取某些列。例如,讓我們說DataTable具有多列,我想找回他們兩個例如ID,姓名查找數據表中的信息

var item = new ListItem("k"); 
      item.Selected = true; 
      this.formatOfReport.Items.Add(item); 
      item = new ListItem("n"); 
      this.formatOfReport.Items.Add(item); 

我要更換名稱,以取代k和n值和數據爲1行中2,名稱是例如史蒂夫和麥克·我想史蒂夫= k和麥克風= n,但我不希望下面

var item = new ListItem(dt.Rows[0][1].ToString(), dt.Rows[0][1].ToString()); 
      item.Selected = true; 
      this.formatOfReport.Items.Add(item); 
      item = new ListItem(dt.Rows[1][1].ToString(), dt.Rows[1][1].ToString()); 
      this.formatOfReport.Items.Add(item); 
+0

下拉是什麼? – CR41G14

+0

對不起,我不明白這個問題。考慮提供一個工作的例子。 – TarkaDaal

+0

你不想硬編碼datacolumn的0和1?然後使用數據列名稱。 – Steve

回答

1

如果我理解正確的話,你需要從數據表選擇Id and Name columnsfilter rows using couple of given Ids

int[] idList = new int[] { 11, 12 }; //Your Required Ids 

var results = (from r in dt.AsEnumerable() 
       where idList.Contains(r.Field<int>("Id")) 
       select new {Id = r.Field<int>("Id"), 
          Name = r.Field<string>("Name")}).ToList(); 

ddl.DataSource = results; 
ddl.DataTextField = "Id"; 
ddl.DataValueField = "Name"; 
ddl.DataBind(); 
1

你有兩個選擇去進行艱苦的代碼,如參考:

// DataSource approach 
formatOfReport.DataTextField = "Name"; 
formatOfReport.DataValueField = "Id"; 
formatOfReport.DataSource = dt; 
formatOfReport.DataBind(); 

// programmatically 
foreach (DataRow row in dt.Rows) 
{ 
    int ID = row.Field<int>("Id"); 
    string name = row.Field<string>("Name"); 
    var item = new ListItem(name, ID.ToString()); 
    formatOfReport.Items.Add(item); 
} 
+0

這將創建在表中的每一行我只想要一個選擇行數4-5滿分100 –

+0

根據表中的行索引,只需要第4行和第5行? –

0

它看起來像你想綁定的DropDownList,你可以做這樣的

DropDownList1.DataSource = dt; 
    DropDownList1.DataValueField="Id"; 
    DropDownList1.DataTextField="Name"; 
    DropDownList1.SelectedValue=//your Id 
    DropDownList1.DataBind(); 
+0

可能是這個http://stackoverflow.com/questions/3813786/asp-dropdownlist-add-numbers-1-15-to-list發佈將對你有用 – Rustem