1

以下の宣言を含む Web ページにデータ ソースがあります。ページのプロパティをフィルターとして使用しています。

<asp:ObjectDataSource runat="server" ID="odsMyDataSource"
TypeName="Game" SelectMethod="GetBySomeID">
    <SelectParameters>
        <asp:ControlParameter Name="SomeID" ControlID="__Page" Type="Int32"
        PropertyName="MyID" />
    </SelectParameters>
</asp:ObjectDataSource>

このデータ ソースにはリピーターが接続されています。ここで、このリピーターとそのデータ ソースをユーザー コントロール (ASCX) に移動したいと思います。MyID プロパティも ASPX から ASCX に移動されます。ここでわからないのは、__Page の代わりに asp:ControlParameter 内で ControlID として使用するものです。

4

3 に答える 3

2

これはまさにこの状況の優れた処理です: ControlParameter は "_Page"を ControlId としてサポートしますが、 " _UserControl"はサポートしません。それを処理するにはかなりの数の方法があります。この記事ではいくつかをリストします。

于 2013-01-31T14:46:34.833 に答える
1

ページ上で、ユーザー コントロールを登録していて、それを1 回だけ使用しているとします。

<%@ Register Src="user_control.ascx" TagName="my_user_control" TagPrefix="uc1" %>

<uc1:my_user_control ID="my_user_control1" runat="server" />

次に、コントロール内で ID を使用できますmy_user_control1

<asp:ControlParameter Name="SomeID" ControlID="my_user_control1" Type="Int32" PropertyName="MyID" />
于 2013-04-10T18:12:11.357 に答える
0

私が見つけた最も簡単な解決策は、ユーザー コントロール内に新しいコントロールを作成し、次のように非表示にすることです。

<asp:Label runat="server" ID="lblStartDate" Text='<%= this.StartDate %>' style="display:none"></asp:Label>

<asp:SqlDataSource runat="server" ID="dsData" ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" SelectCommand="GetDataStoredProcedure" SelectCommandType="StoredProcedure" >
<SelectParameters>
    <asp:ControlParameter ControlID="lblStartDate" Name="startDate" PropertyName="text" DbType="DateTime" />
</SelectParameters>
</asp:SqlDataSource>

ユーザーコントロールのコードビハインド:

 public DateTime StartDate
    {
        get { return ViewState["StartDate"] != null ? (DateTime)ViewState["StartDate"] : DateTime.Now; }
        set { ViewState["StartDate"] = value; }
    }
于 2015-02-23T15:40:24.700 に答える