2011-07-25 6 views
0

ドロップダウンリスト、さまざまな検証コントロール、およびSQLデータソースコントロールを含むユーザーコントロールがいくつかあります。設計時にデータソースコントロールを不可視にすることが可能かどうかを知りたい。デザイン時にSqlDataSourceコントロールを非表示にする

これらのコントロールを使用してさまざまなフォームを構築すると、データソースコントロールがデザインビューに表示され、スペースとその種類の迷惑を掛けます。

<asp:DropDownList ID="ddlAccounts" runat="server" DataSourceID="dsAccounts" 
    DataTextField="name" DataValueField="accountId" 
    AppendDataBoundItems="True"> 
    <asp:ListItem Value="NOT SET">- Select an account -</asp:ListItem> 
</asp:DropDownList> 
<asp:RequiredFieldValidator ID="rfvAccounts" runat="server" 
    ControlToValidate="ddlAccounts" CssClass="ValidationError" Display="Dynamic" 
    ErrorMessage="!" InitialValue="NOT SET" ToolTip="You must select an account."></asp:RequiredFieldValidator> 
<asp:SqlDataSource ID="dsAccounts" runat="server" 
    ConnectionString="<%$ ConnectionStrings:MySqlConnectionString %>" 
    ProviderName="MySql.Data.MySqlClient" 
    SelectCommandType="StoredProcedure" 
    SelectCommand="AccountSelector_Select"> 
</asp:SqlDataSource> 

答えて

2

よく、コードビハインドを使用してプログラムで追加しても、デザイナーでは表示されません。

SqlDataSource s = new SqlDataSource(); 
s.ID = "mySqlSourceControl"; 
Page.Controls.Add(s); 

s.ConnectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString; 
s.SelectCommand = "AccountSelector_Select"; 
s.SelectCommandType = "StoredProcedure"; 

s.Select(DataSourceSelectArguments.Empty); 
0

それでもディスプレイでそれを包む、デザイナーツールを利用したい場合:なしスパンがうまく動作するようです:

<span style="display: none;"> 
    <asp:SqlDataSource ID="MySqlDataSource" runat="server" 
     ...> 
    </asp:SqlDataSource> 
</span> 
+0

より一般的には、alwaysHiddenというクラスを宣言し、表示されないすべてのコンポーネントに割り当てます。後でDOMでそれらを見つける方が簡単です。 –

3

私はスパンには、このアプローチにも、複数のコントロールを使用:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
    obsPopUp.Attributes("style") = "display: inherits;" 
End Sub 
0123:
<span style="display: none;" id="obsPopUp" runat="server"> 
    <asp:SqlDataSource ID="MySqlDataSource" runat="server" ...> 
    </asp:SqlDataSource> 
</span> 

とスパンのLoadイベント変更properyで

それはうまく動作します!

関連する問題