首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DetailsView DropDownLists

DetailsView DropDownLists
EN

Stack Overflow用户
提问于 2012-10-10 05:43:03
回答 1查看 1.4K关注 0票数 1

我是ASP.NET的新手,目前在DetailsView的下拉列表中遇到了问题。

异常错误: System.InvalidOperationException: Eval()、XPath()和Bind()等数据绑定方法只能在数据绑定控件的上下文中使用。

我将这段代码放在我的代码后面,用于刷新DetailsView中的下拉列表列表

代码语言:javascript
复制
protected void ddlVendor_SelectedIndexChanged 
               (object sender, EventArgs e) 
{ 
    DropDownList ddlVendorBB = 
        (DropDownList)DetailsView1.FindControl("VendorBUName"); 

    if (ddlVendorBB != null) 
    { 
        Response.Write("SelectChanged"); 
        ddlVendorBB.DataBind(); 
    } 
} 

protected void SqlDataSourceProd_Selecting 
    (object sender, SqlDataSourceSelectingEventArgs e) 
{ 
    DropDownList ddlVendor = 
        (DropDownList)DetailsView1.FindControl("VendorName"); 

    if (ddlVendor != null) 
    { 
        e.Command.Parameters["@VendorID"].Value = ddlVendor.SelectedValue; 
    } 
}

DetailsView中的这两个下拉列表

代码语言:javascript
复制
<EditItemTemplate> 
    <asp:DropDownList id="VendorName"
        datasourceid="VendorSqlDataSource"
        AutoPostBack="true"
        datatextfield="VendorName"
        DataValueField="VendorID"   
        SelectedValue='<%# Bind("VendorID") %>'  
        runat="server"
        OnSelectedIndexChanged="ddlCategory_SelectedIndexChanged" />

    <asp:SqlDataSource ID="VendorSqlDataSource"
        ConnectionString="<%$Connectionstrings:ConnectionString%>" 
        SelectCommand="SELECT VendorID, VendorName from MDF_Vendor"
        runat="server"> 
    </asp:SqlDataSource> 
</EditItemTemplate> 


<EditItemTemplate>
    <asp:DropDownList id="VendorBUName"
        datasourceid="VendorBUSqlDataSource" 
        datatextfield="VendorBUName"
        DataValueField="VendorBUID"   
        SelectedValue='<%# Bind("VendorBUID") %>'  
        runat="server"/>

    <asp:SqlDataSource ID="VendorBUSqlDataSource"
        runat="server"
        ConnectionString="<%$Connectionstrings:ConnectionString%>"
        selectcommand="SELECT VendorBUID, VendorBUName
                       from MDF_VendorBU
                       Where VendorID = @VendorID"
        OnSelecting="SqlDataSourceProd_Selecting"> 
        <SelectParameters> 
            <asp:Parameter Name="VendorID" Type="Int32" /> 
        </SelectParameters> 
    </asp:SqlDataSource> 
</EditItemTemplate>

问题是:

如果我将SelectedValue=留在那里,当我第一次单击编辑时,处于编辑模式的下拉列表在列出的项目中选择了正确的值,但是当我选择一个新的VendorName时,它错误地显示了"Databining method如Eval(),Xpath(),and Bind()...“。

现在,如果我删除了下拉列表的Selectedvalued,它将在选择新的VendorName时刷新VendorBUName,但不会在我单击“编辑”时选择默认的VendorID。它只列出VendorName列表,而没有选择当前的VendorID列表。

有人能告诉我我的代码出了什么问题吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-10 07:10:31

正如错误所述,您不能在试图使用Bind的地方使用它。不过,您应该能够使用DataBinder

代码语言:javascript
复制
SelectedValue='<%# DataBinder.Eval (Container.DataItem, "VendorBUID") %>'

编辑:由于使用DataBinder将值绑定到SelectedValue不起作用,因此可以在绑定数据时尝试设置该值。如果dataSource是具有名为VendorBUID的属性的类的某个实例,则类似下面的内容可能会在

代码语言:javascript
复制
public override void OnLoad(EventArgs e) {
    VendorBUName.DataBinding += dataBindDropDown;
}

private void dataBindDropDown(object sender, EventArgs e) {
    VendorBUName.SelectedValue = dataSource.VendorBUID;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12808865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档