0

我想知道返回 webcontrol 和传递 webcontrol 之间的区别。我有一个 webcontrol,它在我的 aspx 代码中。喜欢

<asp:TableCell>
<telerik:RadComboBox runat="server" ID="rcbName"></telerik:RadComboBox>
</asp:TableCell>

然后我想以编程方式填充组合框(不管它是什么类型的控件)。

所以我有这个返回组合框的函数:

private RadComboBox rcb CreateRcbSearchResults(DataSet ds)
{
    RadComboBox rcb = new RadComboBox();

    foreach (DataRow row in ds.Tables[0].Rows)
        rcb.Items.Add(new RadComboBoxItem(row["description"].ToString(), row["id"].ToString()));

    return rcb;
}

然后我会设置组合框:

rcbName = CreateRcbSearchResults(ds);

由于某种原因,这不起作用,它只会给我一个空的组合框(浏览器端),即使我在调试时看到它已被填充。

一位同事看了看,将我的函数更改为传递组合框:

private void CreateRcbSearchResults(RadComboBox rcb, DataSet ds)
{
    foreach (DataRow row in ds.Tables[0].Rows)
        rcb.Items.Add(new RadComboBoxItem(row["description"].ToString(), row["id"].ToString()));
}

现在我这样做:

CreateRcbSearchResults(rcbName, ds);

现在它可以工作了。我想知道这是为什么。有人可以告诉我吗?

4

1 回答 1

1

当组合框是页面的一部分时,在组合框上设置的属性比您设置的要多得多。您正在做的是创建一个全新的组合框实例,它没有 ID 和诸如此类的东西,然后替换由页面加载生成的实例。

您更改代码以将引用传递给页面创建的控件,然后您只需向其中添加项目。

于 2012-07-12T14:52:07.187 回答