如何获取已绑定到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"];
(以下建议在问题更新后无效,这表明数据源是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" %>' ... />