私のシナリオは、asp:SQLDataSource を使用してストアド プロシージャにバインドされた Gridview です。これは、SP を選択し、すべてのデータが表示されたウィザードを使用して迅速に行われました。SP は、4 つのパラメーターを含むように作成されました。そのようなパラメーターが null の場合、クエリ内のすべての値が返されます。
検索機能を作成するために、これらのパラメーターを入力する 3 つのテキスト ボックスとドロップダウン リストを作成し、それらをボタンにバインドしました。特にこのサイトでの調査によって、多くの方法と方法を試しましたが、どれもうまくいかないようです. 私は自分の問題を見つけることができないので、この問題について何か助けていただければ幸いです。以下は私のコードです。
<asp:SqlDataSource ID="sqlSourceID" runat="server" ConnectionString="<%$ ConnectionStrings:DBCONNSTRING%>"
SelectCommand="storedProcedureName" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
上記は SQL ストアド プロシージャのバインドです。
コントロールを SQL サーバーのパラメーターとしてバインドしようとしました。このコードの前は、SP が null 値を想定していたため、ページは検索パラメーターなしですべてのレコードを正常にロードしていました。今は何も読み込まれません。
<SelectParameters>
<asp:ControlParameter ConvertEmptyStringToNull="true" ControlID="textBox1" PropertyName="Text" Name="1" Type="DateTime" />
<asp:ControlParameter ConvertEmptyStringToNull="true" ControlID="textBox2" PropertyName="Text" Name="2" Type="DateTime" />
<asp:ControlParameter ConvertEmptyStringToNull="true" ControlID="textBox3" PropertyName="Text" Name="3" Type="String" />
<asp:ControlParameter ConvertEmptyStringToNull="true" ControlID="ddl1" PropertyName="SelectedText" Name="4" Type="String" />
</SelectParameters>
コントロール ID はテキストボックス ID を表します
以下は私のコードビハインドです。
sqlSourceID.SelectParameters["textbox1"].DefaultValue = this.textbox.Text;
sqlSourceID.SelectParameters["textbox2"].DefaultValue = this.textbox1.Text;
sqlSourceID.SelectParameters["textbox3"].DefaultValue = this.textbox2.Text;
sqlSourceID.SelectParameters["ddl1"].DefaultValue = Convert.ToString(this.ddl.SelectedText);
それが私の問題です。検索ボタンがクリックされたときにテキストボックスからパラメーターを渡し、ページの読み込み時または何も書き込まれていない場合に null を想定する方法を見つける必要があります。
事前に貢献してくれたすべての人に感謝します。