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

本文关键字:FormView 字段 绑定 何获取 获取 | 更新日期: 2023-09-27 17:59:13

我有<asp:FormView ID="FormView1" runat="server">

在我的codeehind Page_Load中,我将一个SQL DataSource绑定到FormView1。

我需要在FormView1.DataBind();之后访问Page_Load中DataSource中某个字段的值。

在locals窗口中调试期间,我可以看到FormView1的DataItem属性中的所有字段。

然而,我无法计算出访问这些字段中任何一个的值的代码。

注意:表单中没有使用此字段。我需要它的值来设置asp:label的可见性。

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
}

****因此,在ConnorsFan的帮助下,我能够获得我的字段值。

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"];

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

(以下建议在问题更新后无效,这表明数据源是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" %>' ... />