2010-03-02 51 views
0

我想将两个标签的文本设置为在页面上的FormView中找到的值(其数据来自SQLDataSource。)我应该如何将asp.net标签的文本设置为另一个控件中的某个值?

这样做的最佳方式是什么?我正在考虑为FormView使用DataBound事件来将标签文本设置为FormView中字段的值,或者使用SQLDataSource Selected事件将标签设置为由查询检索的值。我可以将Page_Load事件与FormView结合使用吗?

FormView只显示两个值中的一个,尽管另一个值由SQLDataSource检索。

我不熟悉访问这些控件背后的数据结构,但图中的数据在那里,所以我不如使用它而不是运行相同的SQL查询两次。

我的问题是我使用哪个事件,哪些控件可以访问数据,以及如何访问该控件中的数据?

回答

3

我会用OnDataBound事件,并使用从底层数据源获取的价值:

lblExample.Text = ((DataRowView)((FormView)sender).DataItem)["fieldName"].ToString(); 

希望它能帮助。 // CeriQ

+0

我在问我的问题后发现了一个类似的解决方案。我尝试使用Page_Load事件并直接访问FormView控件(而不是作为关联事件中的发件人)。在Page_Load事件的上下文中,FormView.DataItem返回null,而调试器显示它实际上包含DataRowView我想访问的数据。 – Matt 2010-03-02 17:13:21

+0

不要紧,在随后的重新加载它看起来像是一个侥幸。 – Matt 2010-03-02 17:15:44

+0

在page_load中,不能保证formview将被填充。通过使用OnDataBound事件,只有在获取数据后才会触发,或者数据已更改(已重新填充)。你不需要使用发件人的课程,你可以交换((FormView)发件人)的FormView控件的ID。 – 2010-03-02 17:24:22

0

如果你只是想设置一个标签,只需设置标签在Page_Load事件:

myLabel.Text =“someValue中”;

+0

但是,如何获取值 - 如果我从FormView控件检索它,我可以访问不显示的值吗? SQLDataSource是否将查询结果存储在某个可以访问的数据结构中? – Matt 2010-03-02 16:59:38

+0

你可以通过使用FormView的FindControl方法得到值 – citronas 2010-03-02 17:17:44

相关问题