2011-12-16 14 views
1

2つのSQLデータソースがあります。次のようなことが起こります。ページの読み込み時に、最初のSQLデータソースは 'desknames'のリストを取得し、ドロップダウンに値を設定します。最初のdesknameにデフォルトするはずですが、pageloadのインデックスで最初の項目を安全にするために、いくつかのC#コードを追加しました。次に、選択した 'deskname'を制御パラメータとして使用して、2番目のsqlデータソースをロードする必要があります。 2番目のsqlデータソースから、データソースのコードの背後にあるラベルにhtmlテーブルを作成します。私は、手動で制御パラメータを入力すると、2番目のdatasource-htmlテーブルをテストしました。正常に動作します。SQLデータソースのコントロールパラメータをプルダウンから取得しようとしていますが、認識されません。

私が考えているのは、何とかドロップダウンのdesknameが2番目のSQLデータソースにパラメータとして渡される時間に選択されていないということですが、それを修正する方法はわかりません。私は、コードに表示される順番で遊んでみましたが、違いはありませんでした。私はここでのC#

でasp.netのWebフォームを使用していますちなみに私のコードです:私は=「洗濯&タバコ」DEFAULTVALUEを持って

<asp:HiddenField ID="hiddenUserID" runat="server" Value="" /> 

<asp:SqlDataSource ID="Desknames" runat="server" 
    ConnectionString="<%$ ConnectionStrings:spvConnectionString %>" 
    SelectCommand="exec pmtv2.spTOOL_Deskdropdown @username"> 
    <SelectParameters> 
    <asp:ControlParameter ControlID="hiddenUserID" Name="username" PropertyName="value" /> 
</SelectParameters> 
</asp:SqlDataSource> 

<div id="topdiv" style="float:left; padding-left:2.5%; width:30%; border-bottom:0px; height:20%;">  
    <h2> 
     <asp:DropDownList ID="ChooseDesk" runat="server" DataSourceID="Desknames" 
      DataTextField="Deskname" DataValueField="Deskname" AutoPostBack="true" class="dropdown" OnDataBound="ChooseDesk_databound"> 
     </asp:DropDownList> 
    </h2> 

<asp:SqlDataSource ID="DeskSummary" runat="server" 
    ConnectionString="<%$ ConnectionStrings:spvConnectionString %>" 
    SelectCommand="exec pmtv2.spTOOL_LandingPageDesk @username, @Deskname"> 

    <SelectParameters> 
    <asp:ControlParameter ControlID="hiddenUserID" Name="username" PropertyName="value" /> 
    <asp:ControlParameter ControlID="ChooseDesk" Name="Deskname" PropertyName="SelectedValue" DefaultValue="Laundry & Tobacco"/> 
</SelectParameters> 
</asp:SqlDataSource> 

通知は、これは、第二を可能にするだけで一時修正ですsqlのデータソースを作成するが、通常はこのようなデフォルト値でハードコードすることはできません。

これは難しいかもしれませんが、なぜこれがうまくいかないのかについてのご意見は非常に高く評価されます。

ありがとうございます!あなたのパラメータがすでにあなたのストアドプロシージャで定義されている場合は、execを使用してそれらを再度宣言する必要はありません

答えて

0
はあなたの SeletCommand

SelectCommand="spTOOL_LandingPageDesk" 

を変更し、次の属性に

SelectCommandType="StoredProcedure" 

を追加

コール。

私はあなたのpmtv2があなたがデータベースにログインするために使用しているユーザーであると仮定しています。 web.configの接続文字列が既にあなたのために処理しているので、これは必要ありません。

また、ドロップダウンの属性で使用するクラスに気付きました。これをCssClassに設定します。あなたの問題に貢献しているかもしれません。

class="dropdown" 

は次のようになります。

CssClass="dropdown" 
+0

ご連絡ありがとうございます。 pmtv2は実際にはストアドプロシージャのスキーマ名です。私はあなたが提案した変更を試みたが、私はまだ同じエラーを取得しています - オブジェクトのインスタンスに設定されていないオブジェクト参照(私はSQLデータベースが正しいパラメータを与えられていないので、有効なオブジェクト) – TBK

0

私はあなたがコントロールを初期化する必要があることを発見しました。 OnInitイベントとOnSelectingをデータソースに使用することをお勧めします。これらの機能では、コントロールの値を設定します。

関連する問題