如何解决如何根据下拉列表值过滤网格视图
| 问:我设置了ѭ0set,用于过滤grid view
中的数据。因此,在“ 2”上,我希望它访问数据库存储过程并取回所需的数据。
到目前为止,这是我的代码。还有存储过程,以及GridView的html,以防万一它也出错了。
我的.cs:
public partial class Animals : System.Web.UI.Page
{
protected void Page_Load(object sender,EventArgs e)
{
}
public string FormatURL(object strArgument)
{
return (\"readrealimage.aspx?id=\" + strArgument);
}
protected void btnFilter_Click(object sender,EventArgs e)
{
SqlConnection MyConnection = new
SqlConnection(ConfigurationManager.ConnectionStrings[\"MyConnectionString\"].ConnectionString);
SqlCommand command = new SqlCommand(\"sp_SearchAnimals\",MyConnection);
if (AnimalTypeDDL.Text != \"Dont Mind\")
{
AnimalTypeDDL.Text = command.Parameters[\"@Type_of_Animal\"].Value.ToString();
}
if (CrossBreedDDL.Text != \"Dont Mind\")
{
CrossBreedDDL.Text = command.Parameters[\"@CrossBreed\"].Value.ToString();
}
if (SexDDL.Text != \"Dont Mind\")
{
SexDDL.Text = command.Parameters[\"@Sex\"].Value.ToString();
}
if (SizeDDL.Text != \"Dont Mind\")
{
SizeDDL.Text = command.Parameters[\"@Size\"].Value.ToString();
}
if (AgeDDL.Text != \"Dont Mind\")
{
AgeDDL.Text = command.Parameters[\"@Age\"].Value.ToString();
}
if (LocationDDL.Text != \"Dont Mind\")
{
LocationDDL.Text = command.Parameters[\"@Location\"].Value.ToString();
}
if (RescueDDL.Text != \"Dont Mind\")
{
RescueDDL.Text = command.Parameters[\"@Name\"].Value.ToString();
}
if (ChildrenDDL.Text != \"Select one\")
{
ChildrenDDL.Text = command.Parameters[\"@Children\"].Value.ToString();
}
if (OtherCatsDDL.Text != \"Select one\")
{
OtherCatsDDL.Text = command.Parameters[\"@OtherCats\"].Value.ToString();
}
if (OtherDogsDDL.Text != \"Select one\")
{
OtherDogsDDL.Text = command.Parameters[\"@OtherDogs\"].Value.ToString();
}
GridView1.DataSource = ds;
GridView1.DataBind();
if (GridView1.Rows.Count >= 1)
{
Panel1.Visible = true;
GridView1.Visible = true;
lblMsg.Visible = false;
}
else if (GridView1.Rows.Count < 1)
{
GridView1.Visible = false;
Panel1.Visible = false;
lblMsg.Text = \"Your search criteria returned no results.\";
lblMsg.Visible = true;
}
command.CommandType = CommandType.Text;
command.Connection.Open();
SqlDataReader MyDataReader = command.ExecuteReader();
MyConnection.Close();
}
protected void buttonClear_Click(object sender,EventArgs e)
{
AnimalTypeDDL.Text = \"Don\'t Mind\";
CrossBreedDDL.Text = \"Don\'t Mind\";
SexDDL.Text = \"Don\'t Mind\";
SizeDDL.Text = \"Don\'t Mind\";
AgeDDL.Text = \"Don\'t Mind\";
LocationDDL.Text = \"Don\'t Mind\";
RescueDDL.Text = \"Don\'t Mind\";
}
}
我的存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[sp_SearchAnimals]
(
@Type_of_Animal nvarchar(50),@CrossBreed nvarchar(50),@Sex nvarchar(50),@Size nvarchar(50),@Age nvarchar(50),@Location nvarchar(50),@Name nvarchar(50),@Children nvarchar(50),@OtherCats nvarchar(50),@OtherDogs nvarchar(50),@Details nvarchar(300)
)
AS
BEGIn
SELECT
AD.Location,AD.Details,R.Name,I.Content
FROM
AnimalDetails As AD INNER JOIN
Images As I ON AD.ImageId = I.ImageId,AnimalDetails As DA INNER JOIN RescueDetails As R ON DA.RescueId = R.RescueId
WHERE
(@Type_of_Animal is NUll OR AD.Type_of_Animal = @Type_of_Animal) AND
(@CrossBreed is null OR AD.CrossBreed = @CrossBreed) AND
(@Sex is null or AD.Sex = @Sex) AND
(@Size is null or AD.Size = @Size) AND
(@Age is null or AD.Age = @Age) AND
(@Location is null or AD.Location = @Location) AND
(@Name is null or R.Name = @Name) AND
(@Children is null or AD.Children = @Children) AND
(@OtherCats is null or AD.OtherCats = @OtherCats) AND
(@OtherDogs is null or AD.OtherDogs = @OtherDogs) AND
(@Details is null or AD.Details = @Details)
END
我的.aspx:
<asp:GridView ID=\"GridView1\" runat=\"server\" AutoGenerateColumns=\"False\" DataSourceID=\"SqlDataSource1\"
OnRowDataBound=\"GridView1_RowDataBound\" OnSelectedIndexChanged=\"GridView1_SelectedIndexChanged\"
AllowPaging=\"True\" AllowSorting=\"True\">
<RowStyle CssClass=\"gridViewRowStyle\" Wrap=\"True\" />
<HeaderStyle CssClass=\"gridViewHeaderStyle\" Wrap=\"False\" />
<SelectedRowStyle Wrap=\"true\" CssClass=\"gridViewSelectedRowStyle\" />
<AlternatingRowStyle CssClass=\"gridViewAltRowStyle\" />
<Columns>
<asp:BoundField DataField=\"Type_of_Animal\" HeaderText=\"Type_of_Animal\" />
<asp:BoundField DataField=\"Sex\" HeaderText=\"Sex\" SortExpression=\"Sex\" />
<asp:BoundField DataField=\"Age\" HeaderText=\"Age\" SortExpression=\"Age\" />
<asp:BoundField DataField=\"Location\" HeaderText=\"Location\" />
</Columns>
<FooterStyle CssClass=\"gridViewHeaderStyle\" Wrap=\"False\" />
<PagerSettings Position=\"Bottom\" />
<PagerStyle CssClass=\"gridViewHeaderStyle\" />
</asp:GridView>
<asp:SqlDataSource ID=\"SqlDataSource1\" runat=\"server\" ConnectionString=\"<%$ ConnectionStrings:MyConnectionString %>\"
SelectCommand=\"SELECT [Type_of_Animal],[Sex],[Age],[Location] From[AnimalDetails] \">
</asp:SqlDataSource>
<div style=\"font-family: Arial; font-size: small;\">
You are viewing page
<%=GridView1.PageIndex + 1%>of
<%=GridView1.PageCount%>
</div>
</asp:Panel>
<asp:Label ID=\"lblMsg\" runat=\"server\" Text=\"Your search criteria did not return any Logs\"
Visible=\"False\" CssClass=\"label\"></asp:Label>
</td> </tr> </table>
解决方法
看到代码后,我无法找到关于将DataSet分配给
SqlCommand command
ResultSet的位置的那一行。
我的意思是ѭ7
之后,通过向Sql Server Management Studio传递相同的参数来检查存储过程是否返回任何结果。
另外,您使用的是DataReader,但与ds的绑定是未定义的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。