我有FormView1.DataBind();
。
在我的代码隐藏Page_Load中,我将SQL数据源绑定到FormView1。
我需要在FormView1.DataSource = from prop in dataContext.Properties
join sub in dataContext.SuburbsWithProperties on prop.SuburbID equals sub.SuburbID
where prop.PropertyID == propNo
select new
{
prop.PropertyID,
prop.SuburbID,
prop.Rent,
etc
}
之后的Page_Load中访问DataSource中某个字段的值。
在本地窗口的调试过程中,我可以看到FormView1的DataItem属性中的所有字段。
但是我无法找出访问任何字段值的代码。
注意:表单中未使用此字段。我需要它的值来设置asp:label的可见性。
var dataItem = formView1.DataItem as object;
var dataItemFields = dataItem.GetType().GetProperties().ToDictionary(x => x.Name, x => x.GetValue(dataItem, null));
var fieldValue = (string)dataItemFields["MyFieldName"];
****所以在ConnorsFan的帮助下,我已经能够得到我的场地值。
{{1}}
答案 0 :(得分:-1)
(更新问题后,以下建议无效,表明数据源是LINQ查询)
您可以将 DataItem
强制转换为其实际类型,即DataRowView。然后,您可以访问每个字段的值:
DataRowView drv = FormView1.DataItem as DataRowView;
int ID = (int)drv["ClientID"];
string name = (string)drv["ClientName"];
<小时/> 另一方面,如果Label属于FormView,您可以使用数据绑定表达式在标记中设置可见性条件:
如果该字段包含布尔值:
<asp:Label runat="server" Visible='<%# Eval("fieldName") %>' ... />
如果该字段包含字符串:
<asp:Label runat="server" Visible='<%# Eval("fieldName") == "Some value" %>' ... />