2010-05-20 66 views
8

所以对于ASP双向(双向)绑定,我们这样做......ASP.NET数据绑定双向的,双向的,从后面的代码

<asp:textbox id="txtField" runat="server" 
    text='<%# Bind("SomeField") %>'> 
</asp:textbox> 

SomeField位于用作文本框容器的DetailsView的DataSource。

我也可以(使用文本框的OnDataBinding事件)的代码隐藏做到这一点:

protected void SomeField_OnDataBinding(object sender, EventArgs e) 
{ 
    ((TextBox)sender).Text = Eval("SomeField").ToString(); 
} 

但是,EVAL是只读的...我怎样才能从代码中指定绑定(双向) -背后?

回答

3

我已经设法为我的“边缘情况”找到解决方法。

我使用LLBLGen子类型,因此需要根据用户选择的单选按钮过滤器切换detailsview的数据源。

我试图绑定到子类型字段“声明”在ASP中使用<%#绑定(... 这没有奏效。

我不得不解决的代码隐藏“黑客”哪里我有条件使用details_view预呈现方法在DetailsView显示控件。

对于每个字段我然后有条件地设置它在OnDataBinding单向(只读)结合...

e.g. ((TextBox)sender).Text = Eval("FilePrefix").ToString(); 

Finaly到获取数据推送到数据源,我砍在DetailsView OnItemInserting /更新事件(有条件也一样)......

e.Values["FilePrefix"] = txtFilePrefix.Text; 

我觉得这个技巧,我想我需要一个淋浴后这么脏...

我还是希望有人可以提供更清洁的方法:-)

+1

+1为“肮脏的黑客”,现在我觉得自己像个黑客:) – 2011-08-16 12:06:07

0
+0

Eval(单向)方法有效。我想绑定(双向)工作。 另外我不使用中继器,而是使用detailsview。 – Konrad 2010-05-20 07:07:42

+0

我想我可能会误解你的问题。真的没有双向绑定的东西。您可以在.aspx页面或代码隐藏页面中设置控件的值。要返回值(即用户输入),您必须访问该控件的Text属性。什么是“SomeField”。代码隐藏类的属性? – 2010-05-20 07:15:18

+0

Somefield如果一个表格列位于DetailsView的DataSource中,该列用作文本框的容器。 我有兴趣让文本框将数据推送到数据库中。那就是为什么我需要使用绑定。真的很简单。除了它似乎不容易从代码隐藏中获得。使用<%#绑定(是的,但在代码中不那么容易...... – Konrad 2010-05-20 07:31:40