我是ASP.NET的新手,目前在DetailsView的下拉列表中遇到了问题。
异常错误: System.InvalidOperationException: Eval()、XPath()和Bind()等数据绑定方法只能在数据绑定控件的上下文中使用。
我将这段代码放在我的代码后面,用于刷新DetailsView中的下拉列表列表
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中的这两个下拉列表
<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列表。
有人能告诉我我的代码出了什么问题吗?谢谢!
发布于 2012-10-10 07:10:31
正如错误所述,您不能在试图使用Bind的地方使用它。不过,您应该能够使用DataBinder
SelectedValue='<%# DataBinder.Eval (Container.DataItem, "VendorBUID") %>'编辑:由于使用DataBinder将值绑定到SelectedValue不起作用,因此可以在绑定数据时尝试设置该值。如果dataSource是具有名为VendorBUID的属性的类的某个实例,则类似下面的内容可能会在
public override void OnLoad(EventArgs e) {
VendorBUName.DataBinding += dataBindDropDown;
}
private void dataBindDropDown(object sender, EventArgs e) {
VendorBUName.SelectedValue = dataSource.VendorBUID;
}https://stackoverflow.com/questions/12808865
复制相似问题