GridView显示查询到的数据,但当主键为null时不显示所有数据
GridView shows queried data but does not show all data when primary key is null
我正在尝试在 GridView 中显示所有 Funder 信息,并且还能够过滤它们。截至目前,如果我在 URL 中硬编码 FunderId=somenumber
,它会显示数据。但是当数据为空时,它什么都不显示,而程序告诉它显示每个 FunderId 的所有数据。
我正在使用这个 select 存储过程。如果有指定的 FunderId
,则显示该 FunderId
的数据。如果没有指定 FunderId
,显示所有资助者的数据。
ALTER PROCEDURE [dbo].[spFunderId_Select]
@FunderId int = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM vueFunders
WHERE ([FunderId] = @FunderId OR @FunderIdIS NULL)
END
这是 aspx 标记:
<asp:GridView ID="gvFunderData" runat="server" AutoGenerateColumns="False"
DataSourceID="sdsFunders"
ForeColor="#333333" GridLines="None"
CssClass="GridView"
PagerStyle-CssClass="pgr"
ShowFooter="true"
AlternatingRowStyle-CssClass="alt" AllowPaging="true"
PageSize="20" AllowSorting="true"
EmptyDataText="There are no data records to display."">
<Columns>
<%--FnderId--%>
<asp:TemplateField HeaderText="FunderId" SortExpression="FunderId">
<ItemTemplate>
<asp:Label ID="lblFunderId" runat="server" Text='<%# Eval("FunderId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<%--Money--%>
<asp:TemplateField HeaderText="Money" SortExpression="Money">
<ItemTemplate>
<asp:Label ID="lblMoney" runat="server" Text='<%# Eval("Money")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<%--BankName--%>
<asp:TemplateField HeaderText="NameOfBank" SortExpression="NameOfBank">
<ItemTemplate>
<asp:Label ID="lblNameOfBank" runat="server" Text='<%#Eval("NameOfBank") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="sdsFunders" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseLive %>"
SelectCommandType="StoredProcedure"
SelectCommand="spFunderId_Select">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="FunderId" QueryStringField="FunderId" Type="Int32"/>
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="FunderId" DbType="Int32" />
<asp:Parameter Name="Money" DbType="Int32" />
<asp:Parameter Name="NameOfBank" DbType="String" />
</UpdateParameters>
</asp:SqlDataSource>
当然,如果我注释掉 QueryStringParameter
,它会显示所有资助者的所有数据,但是你无法过滤它,因为你无法查询 FunderId
。感谢所有帮助!
试试这个
SELECT * FROM vueFunders WHERE ( @FunderId IS NULL OR @FunderId = 0 OR [FunderId] = @FunderId )
我正在尝试在 GridView 中显示所有 Funder 信息,并且还能够过滤它们。截至目前,如果我在 URL 中硬编码 FunderId=somenumber
,它会显示数据。但是当数据为空时,它什么都不显示,而程序告诉它显示每个 FunderId 的所有数据。
我正在使用这个 select 存储过程。如果有指定的 FunderId
,则显示该 FunderId
的数据。如果没有指定 FunderId
,显示所有资助者的数据。
ALTER PROCEDURE [dbo].[spFunderId_Select]
@FunderId int = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM vueFunders
WHERE ([FunderId] = @FunderId OR @FunderIdIS NULL)
END
这是 aspx 标记:
<asp:GridView ID="gvFunderData" runat="server" AutoGenerateColumns="False"
DataSourceID="sdsFunders"
ForeColor="#333333" GridLines="None"
CssClass="GridView"
PagerStyle-CssClass="pgr"
ShowFooter="true"
AlternatingRowStyle-CssClass="alt" AllowPaging="true"
PageSize="20" AllowSorting="true"
EmptyDataText="There are no data records to display."">
<Columns>
<%--FnderId--%>
<asp:TemplateField HeaderText="FunderId" SortExpression="FunderId">
<ItemTemplate>
<asp:Label ID="lblFunderId" runat="server" Text='<%# Eval("FunderId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<%--Money--%>
<asp:TemplateField HeaderText="Money" SortExpression="Money">
<ItemTemplate>
<asp:Label ID="lblMoney" runat="server" Text='<%# Eval("Money")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<%--BankName--%>
<asp:TemplateField HeaderText="NameOfBank" SortExpression="NameOfBank">
<ItemTemplate>
<asp:Label ID="lblNameOfBank" runat="server" Text='<%#Eval("NameOfBank") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="sdsFunders" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseLive %>"
SelectCommandType="StoredProcedure"
SelectCommand="spFunderId_Select">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="FunderId" QueryStringField="FunderId" Type="Int32"/>
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="FunderId" DbType="Int32" />
<asp:Parameter Name="Money" DbType="Int32" />
<asp:Parameter Name="NameOfBank" DbType="String" />
</UpdateParameters>
</asp:SqlDataSource>
当然,如果我注释掉 QueryStringParameter
,它会显示所有资助者的所有数据,但是你无法过滤它,因为你无法查询 FunderId
。感谢所有帮助!
试试这个
SELECT * FROM vueFunders WHERE ( @FunderId IS NULL OR @FunderId = 0 OR [FunderId] = @FunderId )