如何获取已绑定到FormView的字段的值

时间:2016-07-30 01:19:42

标签: c# asp.net webforms

我有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}}

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" %>' ... />