Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在TextBox中使用Bind将在TextBox控件之外呈现绑定的数据_C#_Asp.net - Fatal编程技术网

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,是否存在同样的问题?是的。我拿出了更新面板,仍然存在文本框问题和双击问题。我将把代码的这一部分移到一个新的页面,并尽可能多地删除,以查看行为是否发生了变化……删除所有内容没有任何效果。我目前正在将页面移动到一个全新的项目(这非常痛苦)并交叉手指。移动到一个新项目并删除所有可能的代码并没有解决问题(令人惊讶)。这让我很困惑。如果没有人有任何想法,我会在周二发布所有代码。