0

Webコントロールを返すことと渡すことの違いを知りたいのですが。私のaspxコードにあるwebcontrolがあります。好き

<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 に答える