asp.net – 绑定ListView InsertItemTemplate中的DropDownList抛出错误

前端之家收集整理的这篇文章主要介绍了asp.net – 绑定ListView InsertItemTemplate中的DropDownList抛出错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ListView绑定到 LinqDataSource并显示选定的位置.插入项包含一个下拉列表,该列表从另一个LinqDataSource拉出以提供所有未选择的位置.

问题是加载页面时出现以下错误

数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用.

我在网站的另一个页面上做了一个非常类似的设置,并没有给我们这个错误,所以我很困惑.我知道我可以通过不绑定,手动查找控件和获取值来解决这个问题,但这应该工作,我不明白为什么不是.

有什么想法吗?

代码的更好部分如下.

<asp:LinqDataSource ID="ldsLocations" runat="server" 
    ContextTypeName="ClearviewInterface.ESLinqDataContext" EnableDelete="true" EnableInsert="true"
    OnInserting="ldsLocations_Inserting" OnDeleting="ldsLocations_Deleting" 
    TableName="crmLocations" OrderBy="addr1" OnSelecting="ldsLocations_Selecting" />

<asp:LinqDataSource ID="ldsFreeLocations" runat="server" 
    ContextTypeName="ClearviewInterface.ESLinqDataContext" OrderBy="addr1" 
    TableName="v_CVLocations" OnSelecting="ldsFreeLocations_Selecting" />

<asp:ListView ID="lvLocations" DataSourceID="ldsLocations" DataKeyNames="ID" InsertItemPosition="LastItem" runat="server" >

<InsertItemTemplate>
        <tr>
            <td colspan="6"><hr /></td>
        </tr>
        <tr>
            <td colspan="2">

                <asp:DropDownList    ID="ddlFreeLocations" DataSourceID="ldsFreeLocations" DataTextField="addr1" 
                                        DataValueField="record" MarkFirstMatch="true" SelectedValue='<%# Bind("record") %>' 
                                        runat="server" />
            </td>
            <td><asp:ImageButton ID="btnAdd" CommandName="Insert" SkinID="Insert" runat="server" /></td>
        </tr>

    </InsertItemTemplate>

解决方法

正如 Joteke’s Blog所解释的,这是一个引用的解决方案.

Are you using <%#Eval("field")%> expression to bind the control? If
you change that to <%#DataBinder.Eval(Container.DataItem,"field")%>,does that seem to fix the error?

猜你在找的asp.Net相关文章