3

我有一个 radAutoCompleteBox 并且可以获取 Text 属性,但我需要 ID。

我的 AppData.cs 方法:

public IEnumerable<Company> GetAllCompanies()
    {
        _companyRepository = new CompanyRepository();
        return _companyRepository.GetAll();
    }

我在 .aspx 文件上的 InsertTemplate:

<telerik:RadAutoCompleteBox ID="acCompany" runat="server" EmptyMessage="Empresas..." AllowCustomEntry="False" RenderMode="Lightweight"      DataSourceID="CompanyObjectDataSource"  DataTextField="TradeName"  DataValueField="IDCompany"    />

还有我在 .aspx 文件上的数据源:

asp:ObjectDataSource ID="CompanyObjectDataSource" runat="server" SelectMethod="GetAllCompanies" TypeName="Apontamento.DataSource"

还有我的 .cs 文件:

protected void radGrid1_OnInsertCommand(object sender, GridCommandEventArgs e)
    {
        var item = e.Item as GridEditFormItem;
        var company = (item.FindControl("acCompany") as RadAutoCompleteBox).Text;
        var idCompany = (item.FindControl("acCompany") as     RadAutoCompleteBox).DataValueField;
    }

所以,我只是不能让 idCompany 工作。它始终返回字符串值“IDCompany”,而不是 ID 实际值。

有任何想法吗?

谢谢!

4

2 回答 2

0

RadControls for ASP.NET AJAX Documentation看来,您需要处理该EntryAdded事件,如下所示:

protected void RadAutoCompleteBox1_EntryAdded(object sender, AutoCompleteEntryEventArgs e)
{
    // Label1 is made up here just for example's sake
    // e.Entry.Text will give you the name selected
    // e.Entry.Value will give you the ID selected
    Label1.Text = e.Entry.Value + " was added.";
}
于 2013-06-28T18:22:03.097 回答
0

看起来,没有像使用 RadComboBox 那样获取 id 的简单方法,但您可以遍历 Entries 并按文本查找项目。这些方面的东西(未经测试):

  var autoCompleteBox = (item.FindControl("acCompany") as RadAutoCompleteBox);
    int idCompany = 0;
    if (autoCompleteBox !=null)
    {
       foreach (AutoCompleteBoxEntry entry in autoCompleteBox.Entries)
                {
                    if (entry.Text == autoCompleteBox.Text)
                    {
                        idCompany = Convert.ToInt32(entry.Value);
                        break;
                    }
                }
    }
于 2013-06-28T18:25:17.823 回答