![](/img/trans.png)
[英]how to get selectedvalue from DataGridViewComboBoxColumn?
[英]How to get the Id of the selectedvalue?
我的DropDownList具有以下值:
ddl.SelectedValue = { Id = 234, Name = "ABC Name" }
如何獲得ID的值?
我使用WinForms和RadDropDownList
試試這個:
public int GetId(object obj)
{
var anon = new { Id = 0, Name = string.Empty };
var obj2 = MakeSameType(obj, anon);
return obj2.Id;
}
public static T MakeSameType<T>(object obj, T anonymous)
{
return (T)obj;
}
像這樣使用它:
int id = GetId(ddl.SelectedValue);
如果可行,這要感謝C#編譯器將等效匿名類型“壓縮”為單個類型。
請注意,此解決方案非常脆弱
如果添加/刪除/重命名匿名類型的屬性,則GetId
將中斷(您必須使var anon = new {...}
完全對齊)。 如果將創建匿名類型集合的方法移至另一個程序集,該方法也將中斷(因為只有同一程序集中的匿名類型被編譯器“統一”)。
通常,您不應該具有“轉義”方法的匿名類型。 匿名類型應保留在定義的方法中。 直接將其分配為控件的DataSource
遇到問題。
如果您感到懶惰並且不想為鍵值創建類型,請使用Tuple
:
var tuple = Tuple.Create(something, somethingelse, somethingstillelse);
var value1 = tuple.Item1;
var value2 = tuple.Item2;
var value3 = tuple.Item3;
等等。
當您使用匿名類型時,它變得有點復雜。 但是,您可以將SelectedValue強制轉換為動態值,並從此處提取“ Id”:
dynamic selectedValue = ddl.SelectedValue;
int id = selectedValue.Id;
但是我建議在這種情況下聲明自己的類或結構。
我已經更改了LINQ查詢
從:
var query = (from q in tableq where ...
select new {Id = q.Id, Name = q.Name});
至:
var query = (from q in tableq where ...
select q);
...然后將其更改為:
table1.Id = (ddl.SelectedValue as tableq).Id == null ? table1.Id : (ddl.SelectedValue as tableq).Id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.