代码之家  ›  专栏  ›  技术社区  ›  Kendrick

在TextBox中使用Bind将在TextBox控件之外呈现绑定的数据

  •  3
  • Kendrick  · 技术社区  · 14 年前

    我有一个 ListView ObjectDataSource (连接到NHibernate对象)和 EditItemTemplate 我用

    Text='<%# Bind("HideLocation")%>' 
    

    绑定到对象的字符串属性。

    <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>
    

    .aspx代码如下所示:

     <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
    

    1 回复  |  直到 11 年前
        1
  •  0
  •   Kendrick    14 年前

    嗯,我找到了一个解决办法,很有趣。我在最初的问题中也提供了错误的信息,这可能会造成所有的不同。

    我将所有代码移到一个单独的项目中,并将其精简为基本代码。我仍然需要点击两次按钮来获得刷新,文本仍然在文本框之外。我最终发现有人描述了一个不同的问题,这让我意识到我没有绑定到对象数据源。我在ListView中绑定了一个控件,但没有绑定ListView本身。listview被绑定到从我的一个数据模型对象返回的ISet。

    所以,问题是(显然,我将在下面解释为什么我不相信)当您不使用xDataSource控件时,您需要在更改ListView的状态时进行数据绑定。我想象这个概念也可以移植到其他数据控件,事实上我知道我以前也遇到过其他数据绑定控件。