Asp.net 在ListView InsertItemTemplate中绑定DropDownList引发错误

Asp.net 在ListView InsertItemTemplate中绑定DropDownList引发错误,asp.net,linq-to-sql,data-binding,Asp.net,Linq To Sql,Data Binding,我有一个ListView,它绑定到LinqDataSource并显示选定的位置。插入项包含一个dropdownlist,该列表从另一个LinqDataSource提取,以提供所有未选择的位置 问题是加载页面时出现以下错误: 诸如Eval、XPath和Bind之类的数据绑定方法只能在数据绑定控件的上下文中使用 我在网站的另一个页面上做了一个非常类似的设置,它没有给我们这个错误,所以我很困惑。我知道我可以通过不绑定、手动查找控件并获取值来解决这个问题,但这应该可以,我不明白为什么不能 有什么想法吗

我有一个ListView,它绑定到LinqDataSource并显示选定的位置。插入项包含一个dropdownlist,该列表从另一个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>

看看这条线


基本上不能使用绑定语法,因为InsertItemTemplate中的控件是单向的。使用代码隐藏来获取值。

我也遇到过类似的问题。如果不更新该字段的值,请尝试使用Eval,而不是。

如本文所述,这是一个引用的解决方案

是否使用表达式绑定控件?如果 你把它改成, 这似乎可以纠正错误吗


我成功了。我有一个带有SqlDataSource的Formview,在form视图上有一个带有SqlDataSource的dropdownlist

当请求新记录时,我会为两个数据源重新发出select命令-dropdownlist源提供选项列表,而formview数据源不返回任何内容

然后我在formview和dropdownlist上都使用了DataBind,一切正常

我是ASP.Net新手,但这对我来说很有用,允许我做我想做的事情——在dropdownlist上使用Bind,在formview上使用文本框

我希望这有帮助
弥敦E/P>< P>使用EdvaseDeal.EVE来确保绑定在正确的时间发生。

对于这样的场景,我们可以考虑以下解决方案:

对于内部嵌套控件,我们不使用数据绑定,而是使用其他方法填充其项。例如,我们可以使用For循环将项目添加到dropdownlist中,而不是数据绑定。因此,表达式将不会被计算

我们还可以对ContainerDetailsView控件执行更改。代替表达式,我们可以手动使用一些事件(如“RowDataBound”)将数据项填充到特定的内部控件。当执行更新/插入时,在适当的事件(如ItemUpdated或ItemInserting…)中手动从控件中提取值

资料来源:

这将起作用

 protected void lstCompContctPerson_ItemCreated(object sender, RadListViewItemEventArgs e)
        {

        if ((e.Item != null) && (e.Item.ItemType == RadListViewItemType.InsertItem))
        {
            System.Web.UI.Control ddlCompNames = e.Item.FindControl("ddlCompNames");

           (ddlCompNames as RadDropDownList).DataSource = (from _company in objshortcut.GetAllCompanies()
            select new
            {
                  CompanyID = _company.CompanyID,
                  CompContctName = _company.CompanyName
             }).Distinct();

        }
    }

当Dropdownlist在Listview中时,在Dropdownlist的SelectedValue中绑定不起作用。。。正如你所说,你在另一个网站上有相同的设置,这是工作。。。您是否仅在Listview或formview或gridview中放置了下拉列表???我也搜索了很多博客,因为我遇到了同样的问题。但我只找到了一个解决方案。如果您在listview内的下拉列表中找到任何解决方案,请使用Eval显示值并在ItemInserting和ItemUpdateng中插入或更新do代码。。。请也提供给我…是的!这就是我的问题所在,我使用“eval666”构造一个子控件,空值抛出一个抖动。我使用了,它解决了这个问题,因为我的子控件处理了空值,并没有像醉酒的摩尼基那样倒下。PS我更新了你的答案,因为只有链接的答案不好。。。链接背后的东西可能有一天会消失。