Asp.net Radgrid:在更新命令上更改提取的值以进行自动更新

Asp.net Radgrid:在更新命令上更改提取的值以进行自动更新,asp.net,telerik-grid,radgrid,Asp.net,Telerik Grid,Radgrid,在针对objectDataSource的常规formview上,我们定义了更新事件向正在编辑的项添加值的方法,如下所示: protected void MyFormView_ItemUpdating(object sender, FormViewUpdateEventArgs e) { RadComboBox countriesCombo = (RadComboBox)MyFormView.FindControl("CountryRadComboBox")

在针对objectDataSource的常规formview上,我们定义了更新事件向正在编辑的项添加值的方法,如下所示:

protected void MyFormView_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{        
    RadComboBox countriesCombo =
        (RadComboBox)MyFormView.FindControl("CountryRadComboBox");
    // this should never be null, other wise, error is shown
    if (!string.IsNullOrEmpty(countriesCombo.SelectedValue))
        e.NewValues["CountryId"] = countriesCombo.SelectedValue;
在RadGrid中,我使用的是编辑表单。将此代码放入PerformInsert事件方法中非常有效:

GridEditFormInsertItem gridItem = (GridEditFormInsertItem)e.Item.OwnerTableView.GetInsertItem();

Hashtable values = new Hashtable();
gridItem.ExtractValues(values);
values["ReferenceId"] = 0;
RadComboBox comboCountries = (RadComboBox)gridItem.FindControl("CountryRadComboBox");
values["CountryID"] = comboCountries.SelectedValue;                
e.Item.OwnerTableView.InsertItem(values);
然而,试图对编辑做同样的事情对我来说是行不通的。这是我不能做的最后一步。一旦我用组合中的值更改了哈希表值,我如何指示它必须使用这些值

在telerik示例中,他们使用从数据源获得的数据表进行计算,然后映射并在代码中进行更新。。。。我不想那样做,我希望它能像插页一样工作。对于我不需要更改哈希表中任何值的情况,它工作得很好,更新工作正常

谢谢你的帮助
Vladimir

如果我没有弄错,那么提取的值应该已经设置为下拉列表的选定值。尝试使用
Bind
设置标记中的选定值:

<telerik:RadComboBox ID="ddlCountries" runat="server" 
    SelectedValue='<%# Bind("CountryID") %>' ...>


我假设您使用的是他们的automagic更新,页面上有一个
SqlDataSource
控件?我使用的是一个ObjectDataSource,它声明了InsertMethod、UpdateMethod、DeleteMethod和SelectMethod。这个objectdatasource是我的RadGrid的数据源。首先,在我的例子中,selectedValue属性没有出现在RadComboBox的有效属性上(我试图将它放在任何地方,但它不起作用)。但是,假设这对我和radcombobox来说是另一个问题,那么对于复杂的组件和/或我需要问题中描述的行为的情况,我如何做到这一点呢?Intellisense并没有发现它,但它确实存在。我已经用过很多次了。不知道为什么你尝试时它不起作用,但是如果做得正确的话,它应该会起作用。你试过使用Bind和Eval吗?您使用的是什么样的数据源,您能否详细说明行为的含义?