0
<asp:ControlParameter ControlID="ddListPlayerPointSystems" Name="profileid" PropertyName="SelectedValue" />
            <asp:ControlParameter ControlID="ddListCmty" Name="cmty" PropertyName="SelectedValue" />
            <asp:ControlParameter ControlID="ctl00$MainContent$TabContainer1$TabPanel1$FormView3$pointsTextBox" Name="InsertPts" PropertyName="Text" Type="Decimal" />

最初のコントロールパラメータでドロップダウンボックスIDを呼び出すことができるのに、pointsTextBoxであるテキストボックスIDを呼び出せない理由を理解するのに苦労しています。複数のパネルを持つ asp ajax タブ コンテナーを含むマスター ページを使用しています。「ctl00$MainContent$TabContainer1$TabPanel1$FormView3$」を外すと、コントロールが見つかりませんが、これが他の 2 つのコントロールパラメータで機能する理由がわかりません

編集 だから私は私の問題の解決策を見つけました。@TheGeekYouNeed と @JamesJ のおかげで、その特定のテキストボックスに長いパス名が必要な理由がわかりました (ドロップはタブコンテナの外側にあるため、直接の名前が機能しました)。しかし、'<%# Bind("name", "{0:n}") %>' を介してそのテキスト ボックスの値を割り当てていたので、代わりに ControlParameter ではなく asp:Parameter を使用できることがわかりました。そのようです:

"<asp:Parameter Name="name" Type="String" />"

問題は、それがどのように機能するかをよく理解していないことです。

4

1 に答える 1

0

pointsTextBox の ControlID は、サーバー側では 'ct100$MainContent$TabContainer..etc... ではありません。

コード ビハインドで CONtrolID を設定すると、FindControl("pointsTextBox") を使用してテキスト ボックス コントロールへの参照を取得できます。

次のようなことができます:

TextBox t = this.FindControl("pointsTextBox") as TextBox;
if(t != null)
{
    ddListPlayerPOintSystems.Add(new { COntrolID = t, Name = "InsertPts", PropertyName="Text", Type="Decimal"});
}

私はそれをテストしていないので、コードが完璧であると主張しているわけではありませんが、従う必要がある方法はここに示されています.

于 2012-04-18T18:24:05.830 に答える