C# 跳过WebForm中SqlDataSource中sql参数的设置值
我正在asp.net中制作一个Web表单,我想用asp:SqlDataSource中的数据显示gridviewC# 跳过WebForm中SqlDataSource中sql参数的设置值,c#,asp.net,gridview,sqldatasource,C#,Asp.net,Gridview,Sqldatasource,我正在asp.net中制作一个Web表单,我想用asp:SqlDataSource中的数据显示gridview 当我尝试跳过(传递null)某些参数的值时,问题就出现了 下面是我的一些代码片段 在aspx文件中,sqldatasource如下所示 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ApplicationServic
当我尝试跳过(传递null)某些参数的值时,问题就出现了 下面是我的一些代码片段 在aspx文件中,sqldatasource如下所示
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ApplicationServices %>"
SelectCommand="art_bat_art" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="art_naz" DefaultValue="HLA" ConvertEmptyStringToNull="true" Type="String" />
<asp:Parameter Name="art_sifra" DbType="String" Direction="Input"/>
<asp:Parameter Name="vrsta_id" DefaultValue="3" ConvertEmptyStringToNull="true" Type="Int32" />
<asp:Parameter Name="podvrsta_id" DefaultValue="13" ConvertEmptyStringToNull="true"
Type="Int32" />
<asp:Parameter Name="podgrupa2" DefaultValue="1365" ConvertEmptyStringToNull="true" Type="Int32" />
<asp:Parameter Name="podosobine" DefaultValue="1:9241" ConvertEmptyStringToNull="true"
Type="String" />
<asp:Parameter Name="podosobineOR" DefaultValue="true" ConvertEmptyStringToNull="true"
Type="Boolean" />
</SelectParameters>
你试过投吗?例如
DBNull.Value.Tostring()
您必须编辑SQL(或存储过程)才能处理可选参数 ie:如果有:
从表中选择blah,其中art\u sifra=@art\u sifra
将其更改为:从您的表格中选择blah(art\u sifra=@art\u sifra或@art\u sifra='')
然后只需更改convertEmptyString=“false”
并将您的选择参数设置为”
:
SqlDataSource1.SelectParameters[“art\u sifra”]。DefaultValue=“”代码>
还需要在数据源上设置CancelSelectOnNullParameter=“false”
。SqlDataSource1.SelectParameters[“art\u sifra”].DefaultValue=DBNull.Value.ToString();根本不要调用存储过程。我没有得到任何错误,但我也没有得到任何错误data@adopilot:是否要发布存储过程,以便我们检查是否正确处理空参数?
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click1(object sender, EventArgs e)
{
SqlDataSource1.SelectParameters["art_sifra"].DefaultValue = DBNull.Value; //Cannot implicitly convert type
SqlDataSource1.SelectParameters["art_sifra"].DefaultValue = System.Data.SqlTypes.SqlString.Null; //Cannot implicitly convert type
SqlDataSource1.SelectParameters["art_sifra"].DefaultValue = System.Data.SqlTypes.SqlString.Null.ToString(); //IT compiles but i get NULL as text in SQL
//IF I Just skip seting of this parametar, My SqlDataSource won't call stored proce
SqlDataSource1.SelectParameters["art_sifra"].DefaultValue = string.Empty; //Again no execution of stored proce
//Even if I call SqlDataSource1.DataBind(); //nothing cames to sql
GridView1.DataBind();
}
}
DBNull.Value; //Cannot implicitly convert type
DBNull.Value.Tostring()