RadComboBox绑定选定的值

时间:2014-03-24 14:35:29

标签: c# asp.net .net telerik radcombobox

我有一个radcombobox,我试图将所选值绑定到我从数据库中的表中撤回的数据。

  <telerik:RadComboBox ID="cboRole" runat="server"  DataValueField="UserType.ID" DataTextField="UserType.Value" Text='<%# Bind("UserType") %>' DataSourceID="odsCertifications"  >

                                    </telerik:RadComboBox>

这是我的数据

   public partial class Certification
{
    public Certification()
    {
        this.Courses = new HashSet<CertificationCourse>();
    }

    public int ID { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public int Duration { get; set; }
    public Nullable<System.DateTime> Expiration { get; set; }
    public bool IsActive { get; set; }
    public string CreatedBy { get; set; }
    public System.DateTime CreatedOn { get; set; }
    public string UpdatedBy { get; set; }
    public Nullable<System.DateTime> UpdatedOn { get; set; }
    public Nullable<int> UserTypeID { get; set; }

    public virtual ICollection<CertificationCourse> Courses { get; set; }
    public virtual SystemCode UserType { get; set; }
}

UserType具有Value和ID属性,我尝试绑定DataTextFieldsDataValueFields。但是,在尝试以这种方式绑定时,我收到了javascript异常。如果省略了javascript消息,那么我无法完全看到确切的错误消息是什么。

以下是chrome js调试器告诉我的事情:

Uncaught Sys.WebForms.PageRequestManagerServerErrorException: 
Sys.WebForms.PageRequestManagerServerErrorException: Object of type
System.Data.Entity.DynamicProxies.Certification_D985D293565CB0BFD87FA8F8F44D70ACF4130D6E138A82D6E486544C53D7FE10 does ...<omitted>...y.

<asp:ObjectDataSource runat="server" ID="odsCertifications" SelectMethod="GetActiveCertifications" TypeName="SitefinityWebApp.Controllers.CertificationController"></asp:ObjectDataSource>


    public List<Certification> GetActiveCertifications()
    {
        using (var db = new Entities())
        {
            try
            {

                return db.Certifications.Include("UserType").Where(x => x.IsActive == true).OrderBy(x => x.Title).ToList();

            }

            catch (Exception ex)
            {
                ExceptionManager.LogException(this, ex);
                return null;
            }
        }
    }

3 个答案:

答案 0 :(得分:1)

我对RAD的RAD版本没有任何了解,但我认为问题来自于您尝试将 SystemCode 对象绑定到ComboBox的事实,只能处理像int / string这样的简单类型 我想你应该使用 UserTypeID 绑定,但我不确定它是否会起作用,因为它可以为Nullable。

答案 1 :(得分:0)

你想做什么?我想&#34; odsCertifications&#34;不是一个清单。因此,如果您只想显示认证对象中的绑定用户类型值。您不需要将任何源绑定到组合框。只需将列表项添加到cs中的combobox即可。一边说:

cbcRole.Items.Add(new RadComboboxItem(){Value=odsCertifications.UserType.ID, Text=odsCertifications.UserType.Value})   //RadComboboxItem and properties can be different I wrote only as example.

如果您希望使用所有用户类型填充组合框并显示绑定用户类型值(在认证对象中作为选定项),则必须将UserType列表对象绑定到组合框,如:

<telerik:RadComboBox ID="cboRole" runat="server"  DataValueField="ID" DataTextField="Value" DataSourceID="userTypes" ></telerik:RadComboBox> 

的DataSourceID =&#34; userTypes&#34;这里,userTypes必须是List对象,如

List<UserType> userTypes;

您可以在cs中设置所选项目。一边说:

cboRole.SelectedValue=odsCertifications.UserType.ID;

答案 2 :(得分:0)

要获取实际的服务器异常,请删除AJAX。你得到的是MS AJAX在部分回发期间捕获的服务器异常,并作为JavaScript错误发送(截断)到客户端。

我还认为您可能需要将您需要的字符串属性公开为直接字段,而不是作为传递给组合属性的字段的子字段