我的场景是一个 Gridview,它使用 asp:SQLDataSource 绑定到一个存储过程。这是使用向导快速完成的,我在其中选择了 SP 并显示了所有数据。SP 以包含 4 个参数的方式创建。当此类参数为空时,它们将返回查询中的所有值。
我创建了 3 个文本框和一个下拉列表来填充这些参数,将它们绑定到一个按钮以尝试创建搜索功能。我尝试了很多方法和方法,尤其是通过对这个站点的研究,但似乎没有一个有效。我不能完全找到我的问题,所以我很感激任何关于此事的帮助。下面是我的代码。
<asp:SqlDataSource ID="sqlSourceID" runat="server" ConnectionString="<%$ ConnectionStrings:DBCONNSTRING%>"
SelectCommand="storedProcedureName" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
以上是SQL存储过程绑定。
我已尝试将控件绑定为 SQL 服务器的参数。在此代码之前,用于加载所有记录的页面在没有搜索参数的情况下正常加载,因为 SP 假定为空值。现在什么都没有加载。
<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 或没有写入任何内容。
感谢所有提前做出贡献的人。