2

我添加了一个 RadControl、RadGrid,我需要在编辑模式下添加一个 radComboBox。

当用户单击 radComboBox 时,我需要在用户更新值时获取 radComboBox 的“文本”和“值”以保存到表中。

<telerik:RadComboBox ID="RadComboBox1" Runat="server" 
             DataSourceID="SqlDataSource1" DataTextField="docCategoryName" 
             DataValueField="docCategoryID" Height="200px" Skin="Vista">

当用户从 radComboBox 中进行选择时,我需要将 DataTextField 和 DataValueField 的值放入一个 HiddenField。

4

2 回答 2

1

Program.X 描述的方法非常好。当然,如果您在 RadGrid 的 GridTemplateColumn 内使用 RadCombobox,这将有效。

RadGrid 还提供了一个内置功能GridDropDownColumn,可以在编辑期间自动呈现 RadCombobox。如果选择使用内置列类型,则需要以编程方式为渲染的 RadGrid 设置客户端事件处理程序,如下所示:

protected void RadGrid1_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
    //Find GridEditableItems when in Edit mode
    if (e.Item is GridEditableItem && e.Item.IsInEditMode)
    {
        //Get reference to item (i.e. Row)
        var item = e.Item as GridEditableItem;

        //Get reference to auto-generated RadCombobox in
        //specific column (in this case, a column called Title)
        var rcb = item["Title"].Controls[0] as RadComboBox;
        if (rcb == null)
            return;

        //Customize the RadCombobox properities
        rcb.OnClientSelectedIndexChanged = "onselectedindexchanged";
    }
}

其中“onselectedindexchanged”是页面上旨在处理 RadCombobox 事件的客户端 JavaScript 函数的名称。

这些方法中的任何一种都应该使您能够实现目标。

于 2009-08-24T22:01:26.713 回答
1

Telerik 是帮助您解决此问题的最佳人选,但来自他们的网站(和记忆):

http://www.telerik.com/help/aspnet-ajax/combo_clientsideonclientselectedindexchanged.html

如果您有 radCombo:

<telerik:RadComboBox
 ID="RadComboBox1"
 runat="server"
 OnClientSelectedIndexChanged="OnClientSelectedIndexChanged">
</telerik:RadComboBox> 

使用您的 JS 事件:

<script language="javascript" type="text/javascript">
function OnClientSelectedIndexChanged(sender, eventArgs)
{
 var item = eventArgs.get_item();

// get the text and value elements
var text=item.get_text();
var val=item.get_value();

$('#hiddenField').val(val);
}
</script>

其中 hiddenField 是隐藏字段的 ID。

于 2009-08-13T21:00:33.733 回答