C# 在TextBox中使用Bind将在TextBox控件之外呈现绑定的数据
我有一个C# 在TextBox中使用Bind将在TextBox控件之外呈现绑定的数据,c#,asp.net,C#,Asp.net,我有一个ListView(在更新面板中)绑定到ObjectDataSource(连接到一个NHibernate对象)并在我使用的EditItemTemplate中 Text='<%# Bind("HideLocation")%>' Text='' 绑定到对象的字符串属性 当我点击编辑(两次,我遇到的另一个问题)并在Chrome中查看代码时,输出如下所示: <div class="InputLine InputLineLevel2"> <div clas
ListView
(在更新面板中)绑定到ObjectDataSource
(连接到一个NHibernate对象)并在我使用的EditItemTemplate
中
Text='<%# Bind("HideLocation")%>'
Text=''
绑定到对象的字符串属性
当我点击编辑(两次,我遇到的另一个问题)并在Chrome中查看代码时,输出如下所示:
<div class="InputLine InputLineLevel2">
<div class="InputLabel">Hide Location:</div>
<div class="InputControl">
"
In locker 2317"
<input
name="ctl00$MainContentPlaceholder$ItemDetailsListView$ctrl0$txtItemHideLocation"
type="text"
maxlength="128"
id="ctl00_MainContentPlaceholder_ItemDetailsListView_ctrl0_txtItemHideLocation"
style="width:300px;">
</div>
</div>
<asp:UpdatePanel ID="ItemDetailsUpdatePanel" UpdateMode="Always" runat="server">
<asp:ListView ID="ItemDetailsListView" runat="server" ...>
<EditItemTemplate>
<fieldset class="FieldsetLevel2">
<legend>Edit Item: <%# Eval("SearchItem.SearchItemName") %></legend>
<div class="InputLine InputLineLevel2">
<div class="InputLabel">Hide Location:</div>
<div class="InputControl">
<asp:TextBox ID="txtItemHideLocation" Width="300px"
Text='<%# Bind("HideLocation")%>'
runat="server"></asp:TextBox>
</div>
</div>
... a bunch of other controls & end tags
隐藏位置:
"
储物柜2317“
.aspx代码如下所示:
<div class="InputLine InputLineLevel2">
<div class="InputLabel">Hide Location:</div>
<div class="InputControl">
"
In locker 2317"
<input
name="ctl00$MainContentPlaceholder$ItemDetailsListView$ctrl0$txtItemHideLocation"
type="text"
maxlength="128"
id="ctl00_MainContentPlaceholder_ItemDetailsListView_ctrl0_txtItemHideLocation"
style="width:300px;">
</div>
</div>
<asp:UpdatePanel ID="ItemDetailsUpdatePanel" UpdateMode="Always" runat="server">
<asp:ListView ID="ItemDetailsListView" runat="server" ...>
<EditItemTemplate>
<fieldset class="FieldsetLevel2">
<legend>Edit Item: <%# Eval("SearchItem.SearchItemName") %></legend>
<div class="InputLine InputLineLevel2">
<div class="InputLabel">Hide Location:</div>
<div class="InputControl">
<asp:TextBox ID="txtItemHideLocation" Width="300px"
Text='<%# Bind("HideLocation")%>'
runat="server"></asp:TextBox>
</div>
</div>
... a bunch of other controls & end tags
编辑项:
隐藏位置:
... 一组其他控件和结束标记
你知道为什么绑定数据的值(在本例中:在locker 2317中)显示在文本框之外,而不是作为数据的内容吗 嗯,我找到了一个解决办法,这是一个有趣的办法。我在最初的问题中也提供了错误的信息,这可能会造成所有的不同 我把我所有的代码移到了一个单独的项目中,并将其精简到了最基本的部分。我仍然需要点击两次按钮才能刷新,而文本仍然在文本框之外。我最终发现有人描述了一个不同的问题,这让我意识到我没有绑定到对象数据源。我在ListView中绑定了一个控件,但不是ListView本身。listview已绑定到从我的一个数据模型对象返回的ISet 所以,问题是(显然,我将在下面解释为什么我不相信)当您不使用xDataSource控件时,您需要在更改ListView的状态时进行数据绑定。我认为这个概念也适用于其他数据控件,事实上,我知道我以前在使用其他数据绑定控件时遇到过它 这一次看起来不同的是,我为什么没有马上给出线索,是因为它几乎起作用了。事件在第一次回发时激发,并设置EditItemIndex。这对显示没有影响(尽管发生在PreRender事件之前),因此我猜测这与事件模型和ListView控件的内部工作之间的交互有关。然而,在第二次回发时(再次单击按钮),事件没有被触发,但显示被更新(使用来自我的数据源的数据,尽管不是我想要的位置)
当我在更改EditIndex后将代码修改为databind时,它不仅消除了第二次回发的需要,而且还将数据绑定文本放在文本框中,而不是放在文本框之前。如果没有updatepanel,是否存在同样的问题?是的。我拿出了更新面板,仍然存在文本框问题和双击问题。我将把代码的这一部分移到一个新的页面,并尽可能多地删除,以查看行为是否发生了变化……删除所有内容没有任何效果。我目前正在将页面移动到一个全新的项目(这非常痛苦)并交叉手指。移动到一个新项目并删除所有可能的代码并没有解决问题(令人惊讶)。这让我很困惑。如果没有人有任何想法,我会在周二发布所有代码。