问:我设置的dropdownlists
用于过滤grid view
中的数据。因此,在filter button click
上,我希望它访问数据库存储过程并返回所需的数据。
到目前为止,这是我的代码。和存储过程,以及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>
答案 0 :(得分:0)
看到你的代码后,我无法找到你为SqlCommand command
ResultSet分配DataSet的位置。
我的意思是DataSet ds = command.ExecuteDataSet();
之后,通过从Sql Server Management Studio传递相同的参数来检查您的存储过程是否返回任何结果。
此外,您正在使用DataReader但使用未绑定的ds进行绑定。