2

次のようなドロップダウンコントロールを備えたasp.net Webページがあります。

<asp:DropDownList ID="TypeDrp" runat="server" 
        OnSelectedIndexChanged="LoadCorrectForm" AutoPostBack="True">
    <asp:ListItem>X</asp:ListItem>
    <asp:ListItem>Y</asp:ListItem>
    <asp:ListItem>Z</asp:ListItem>
    </asp:DropDownList>

    <br />

    <asp:PlaceHolder ID="PlaceHolder1" runat="server">

    </asp:PlaceHolder>

ポストバック後に placeholder1 にコントロールを動的にロードしたい。次のような「myControls」という名前のフォルダーにあります。

XTypeForm.ascx
YTypeForm.ascx
ZTypeForm.ascx

それらを正しく呼び出して使用するにはどうすればよいですか?次のように sth を使用するように言われた人がいます:

protected void LoadCorrectForm(object sender, EventArgs e)
{
    string SelectedValue = TypeDrp.SelectedItem.ToString();
    Control userControl = GetSpecificUserControl(SelectedValue);
    PlaceHolder1.Controls.Clear();   // Remove old user control
    PlaceHolder1.Controls.Add(userControl);
}

しかし、エラーがあり、自分のコードに変更する方法がわかりませんか?

4

3 に答える 3

0

うまくいくかどうかはわかりませんが、このように試すことができます

string SelectedValue = "foldername/"+TypeDrp.SelectedValue.ToString();
var lobjucModelTabs = (SelectedValue)LoadControl("~/yourfolder/"+SelectedValue);
PlaceHolder1.Controls.Clear();
PlaceHolder1.Controls.Add(lobjucModelTabs );

それが機能しない場合は
、switchステートメントを使用する必要があります。

 string filename = TypeDrp.SelectedValue;
        UserControl userControl;
        switch (filename)
        {
            case "XTypeForm.ascx":
                UserControl ctrl = (XTypeForm)LoadControl("NewFolder1/XTypeForm.ascx");
                PlaceHolder1.Controls.Clear();
                PlaceHolder1.Controls.Add(ctrl);
                break;
        }
于 2012-10-31T09:51:51.177 に答える
0

ascx ユーザー コントロールをロードするには、次のようなコードを使用します。

if(!Page.IsPostBack) 
{ 
   WebUserControl1 uc = 
   (WebUserControl1) Page.LoadControl("WebUserControl1.ascx"); 
   PlaceHolder1.Controls.Add(uc); 
}
于 2012-10-31T09:15:28.410 に答える
0

置く

<asp:DropDownList ID="TypeDrp" runat="server" 
    OnSelectedIndexChanged="LoadCorrectForm" AutoPostBack="True">
<asp:ListItem Value="XTypeForm.ascx">X</asp:ListItem>
<asp:ListItem Value="YTypeForm.ascx">Y</asp:ListItem>
<asp:ListItem Value="ZTypeForm.ascx" >Z</asp:ListItem>
</asp:DropDownList>

次に使用します

文字列 SelectedValue = TypeDrp.SelectedValue.ToString();

それが動作します。

于 2012-10-31T09:18:13.530 に答える