1

前のページのクエリ文字列で渡されたものに基づいてGridViewを構築しています。

GridViewにデータが入力されていない場合に、「レコードが見つかりません」というメッセージを表示する方法はありますか?つまり、クエリはGridViewに入力するレコードを生成しません。

コード:

<div class="centergrid">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataSourceID="SqlDataSource1" CssClass="bookgridview">
        <Columns>
            <asp:TemplateField HeaderText="Choose">
            <ItemTemplate>
                 <asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/bookingform.aspx?ID={0}", Eval("ScheduleId")) %>'>Book</asp:HyperLink>
            </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="TName" HeaderText="Name" SortExpression="TName" />
            <asp:BoundField DataField="SDate" HeaderText="Date" SortExpression="SDate" DataFormatString="{0:d}" />
            <asp:BoundField DataField="STime" HeaderText="Time" SortExpression="STime" />
            <asp:BoundField DataField="TPriceadult" HeaderText="Price (Adult)" 
                SortExpression="TPriceadult" DataFormatString="{0:C}"  /> 
            <asp:BoundField DataField="TPricesenior" HeaderText="Price (Student/Senior)" 
                SortExpression="TPricesenior" DataFormatString="{0:C}"  /> 
            <asp:BoundField DataField="TPricechild" HeaderText="Price (Child)" 
                SortExpression="Tpricechild" DataFormatString="{0:C}"   /> 
            <asp:BoundField DataField="TDuration" HeaderText="Duration"
                SortExpression="TDuration" />
            <asp:BoundField DataField="ScheduleId" HeaderText="ScheduleId" 
                SortExpression="ScheduleId"  Visible="False" />
        </Columns>
    </asp:GridView>

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ChinatowndbConnString %>" 
        SelectCommand="SELECT * FROM [vwSchedule] Where TourId=@tid">

        <SelectParameters>
            <asp:QueryStringParameter DbType="Int32" Name="tid" QueryStringField="tourid" />
        </SelectParameters>
    </asp:SqlDataSource>
4

1 に答える 1

2

GridView が設定されていない場合、「レコードが見つかりません」というメッセージを表示する方法はありますか?

はい、EmptyDataTemplateを使用します。

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="SqlDataSource1" CssClass="bookgridview">

    <emptydatarowstyle backcolor="LightBlue"
      forecolor="Red"/>

    <emptydatatemplate>

      <asp:image id="NoDataImage"
        imageurl="~/images/Image.jpg"
        alternatetext="No Image" 
        runat="server"/>

        No records found.  

    </emptydatatemplate> 

    <Columns>
        <asp:TemplateField HeaderText="Choose">
        <ItemTemplate>
             <asp:HyperLink ID="lnkSelect" runat='server' NavigateUrl='<%# String.Format("~/bookingform.aspx?ID={0}", Eval("ScheduleId")) %>'>Book</asp:HyperLink>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="TName" HeaderText="Name" SortExpression="TName" />
        <asp:BoundField DataField="SDate" HeaderText="Date" SortExpression="SDate" DataFormatString="{0:d}" />
        <asp:BoundField DataField="STime" HeaderText="Time" SortExpression="STime" />
        <asp:BoundField DataField="TPriceadult" HeaderText="Price (Adult)" 
            SortExpression="TPriceadult" DataFormatString="{0:C}"  /> 
        <asp:BoundField DataField="TPricesenior" HeaderText="Price (Student/Senior)" 
            SortExpression="TPricesenior" DataFormatString="{0:C}"  /> 
        <asp:BoundField DataField="TPricechild" HeaderText="Price (Child)" 
            SortExpression="Tpricechild" DataFormatString="{0:C}"   /> 
        <asp:BoundField DataField="TDuration" HeaderText="Duration"
            SortExpression="TDuration" />
        <asp:BoundField DataField="ScheduleId" HeaderText="ScheduleId" 
            SortExpression="ScheduleId"  Visible="False" />
    </Columns>
</asp:GridView>

または、このプロパティの代わりにEmptyDataTextプロパティを設定することにより、空のデータ行に組み込みの UI を使用できます。

于 2012-11-30T12:55:43.890 に答える