使用VB在ASP.NET中的多重网格视图中的多重信息和图片

时间:2015-02-26 09:39:59

标签: sql asp.net vb.net gridview

我正在尝试建立一个网站并遇到一些麻烦。我的编码知识和精明充沛是最好的,如果你知道一个更好的方法来做到这一点,请务必告诉我。

在我的精选栏页面上,我设置了两个网格视图。 gvPicsRandomBar(仅限图片)和GVRandomBars(仅供参考)。每个都有自己的SQLDataSource。我把它设置到GVRandomBars选择"随机"通过SQL TOP命令吧。我试图做的是让gvPicsRandomBar显示相同的图片"随机"由GVRandomBars选择的栏。两个gridviews都是从同一个表查询但使用不同的SELECT语句,因为每个gridview都关注同一个表行中的不同项。

我以为我通过从GVRandomBars中读取主键并将该值放在Label(lblRandomBar)中来实现这一点,我将其用作gvPicsRandomBar的控件以匹配正确的pic以显示在其中#s; s拥有gridview,因为他们都查询同一个数据库,但我错了。每当我启动我的网站时,我都会收到此错误"索引超出范围。必须是非负数且小于集合的大小。 参数名称:index"。我只是不确定在哪里放置此代码,即(事件)lblRandomBar.Text = GVRandomBars.DataKeys(0).Value.ToString(),以便我不会收到上述错误。

如果通过奇迹分离问题,我会让它发挥作用

我遇到的一个问题是,似乎主键的值未传递给lblRandomBar.text。我认为这是因为我不知道在哪里正确放置代码lblRandomBar.Text = GVRandomBars.DataKeys(0).Value.ToString()当我有时让它工作时我遇到的另一个问题是gvPicsRandomBar中显示的图片比我单击搜索时落后一步按钮。例如,我点击搜索city" Austin"在我的下拉列表中,它可能会给我一个主键值45.在我点击下拉列表中的另一个城市并且页面回发到服务器之前,不会显示该主键的图片。

主键的值在lblRandomBar.text中,用于GVRandomBars中显示的当前条形图,但是与点击的相关条形图的图片不会出现在gvPicsRandomBar中,直到单击搜索按钮而另一个"随机"栏显示在GVRandomBars中。所以我正在GvPandRandomBar中查看GVPandRandomBar中的图片,该栏目是在GVRandomBars中显示的,而另一个栏信息当前显示在GVRadnomBars中。

我希望同时在两个网格视图中都有相同的条形图信息和条形图,而不是像我目前使用gvPicsRandomBar中的图片一样。任何帮助将不胜感激。感谢。

ASP.NET HTML



<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="Random Bar.aspx.vb" Inherits="RGVHappyHour.Featured_Bar" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <center><h2>Random Bar</h2></center>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <p>
        <asp:GridView ID="gvPicsRandomBar" runat="server" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="Number,Bar Name,Image" DataSourceID="SqlDataSourceRandomBarPics" ForeColor="#333333" GridLines="None" HorizontalAlign="Center" Width="548px">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                <asp:ImageField DataImageUrlField="Image" HeaderText="Image" NullDisplayText="No Picture">
                </asp:ImageField>
            </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSourceRandomBarPics" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringBars %>" SelectCommand="SELECT * FROM [Bars] WHERE ([Number] = @Number)">
            <SelectParameters>
                <asp:ControlParameter ControlID="lblRandomBar" Name="Number" PropertyName="Text" Type="Int32" />
            </SelectParameters>
        </asp:SqlDataSource>
    </p>
    <p>
        <asp:GridView ID="GVRandomBars" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSourceRandomBar" Width="548px" CellPadding="4" ForeColor="#333333" GridLines="None" AllowPaging="True" DataKeyNames="Number" SelectedIndex="0">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                <asp:BoundField DataField="Bar_Name" HeaderText="Bar Name" SortExpression="Bar_Name" />
                <asp:BoundField DataField="Addresss" HeaderText="Addresss" SortExpression="Addresss" />
                <asp:BoundField DataField="Phone_Number" HeaderText="Phone Number" SortExpression="Phone_Number" />
                <asp:BoundField DataField="Days" HeaderText="Days" SortExpression="Days" />
                <asp:BoundField DataField="Happy_Hour" HeaderText="Happy Hour" SortExpression="Happy_Hour" />
            </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" ForeColor="White" Font-Bold="True" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle ForeColor="#333333" BackColor="#F7F6F3" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSourceRandomBar" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringBars %>" SelectCommand="SELECT TOP (1) [Number], [Bar Name] AS Bar_Name, Addresss, [Phone Number] AS Phone_Number, Days, [Happy Hour] AS Happy_Hour, [Image] AS Image FROM Bars WHERE (City = @City) ORDER BY NEWID()">
            <SelectParameters>
                <asp:ControlParameter ControlID="ddlCity" Name="City" PropertyName="SelectedValue" />
            </SelectParameters>
        </asp:SqlDataSource>
    <p>
        <table class="style1" style="width: 100%">
        <tr>
            <td style="width: 220px; text-align: right;" class="style2">
                <asp:Label ID="lblCity" runat="server" Text="City:" Font-Size="Large" 
                    ForeColor="#47C2FF"></asp:Label>
            </td>
            <td style="width: 135px">
                <asp:DropDownList ID="ddlCity" runat="server" DataSourceID="SqlDataSourceCity" 
                    DataTextField="City" DataValueField="Number">
                </asp:DropDownList>
                <asp:SqlDataSource ID="SqlDataSourceCity" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionStringBars %>" SelectCommand="SELECT * FROM [City] ORDER BY [City]"></asp:SqlDataSource>
            </td>
            <td style="width: 220px; position: relative; text-align: left; vertical-align: middle;">
                <asp:Button ID="btnCitySearch" runat="server" Text="Search" />
            </td>
        </tr>
        <tr>
            <td style="width: 220px" class="style2" draggable="true">
                <asp:Label ID="lblRandomBar" runat="server"></asp:Label>
            </td>
            <td style="width: 135px">
                &nbsp;</td>
            <td style="width: 220px">
                &nbsp;</td>
        </tr>
        </table>
          </p>
</asp:Content>
&#13;
&#13;
&#13;

随机Bar.aspx.vb背后的代码

&#13;
&#13;
Public Class Featured_Bar
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub

    Protected Sub btnCitySearch_Click(sender As Object, e As EventArgs) Handles btnCitySearch.Click

    End Sub

    Protected Sub GVRandomBars_SelectedIndexChanged(sender As Object, e As EventArgs) Handles GVRandomBars.SelectedIndexChanged

    End Sub

    Protected Sub btnCitySearch_DataBinding(sender As Object, e As EventArgs) Handles btnCitySearch.DataBinding
        lblRandomBar.Text = GVRandomBars.DataKeys(0).Value.ToString()
    End Sub
End Class
&#13;
&#13;
&#13;

0 个答案:

没有答案