由于参数值,我的gridview不会在浏览器中显示

时间:2016-05-09 14:44:42

标签: html asp.net visual-studio gridview

我正在使用ASP.net,在某些时候,我有一个gridview,当我调试我的项目时,它不会出现在我的浏览器中。在同一页面上,我是否使用了一个文本框,而且确实显示了该文本框。

这是HTML。

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/MasterPages/SvShop.Master" CodeBehind="Mijnoverzicht.aspx.vb" Inherits="SvShop.Mijnoverzicht" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">


<h1>Mijn Artikelen</h1>


<table>
        <tr>
            <td>Email</td>
            <td>
                <asp:TextBox ID="txtMijnEmail" runat="server" CssClass="tekstvak" Width="190px"></asp:TextBox>

            </td>
            </tr>
    </table>



<div class="OverzichtMijn">


    <asp:GridView ID="GridViewMijn" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataSourceID="MijnDataSource" AllowSorting="True" Width="845px">

        <Columns>

            <asp:BoundField DataField="ArtikelBeschrijving" HeaderText="Beschrijving" SortExpression="ArtikelBeschrijving" />
            <asp:BoundField DataField="ArtikelPrijs" HeaderText="Prijs" SortExpression="ArtikelPrijs" />
            <asp:BoundField DataField="ArtikelAankoopdatum" HeaderText="Aankoopdatum" SortExpression="ArtikelAankoopdatum" />
            <asp:BoundField DataField="ArtikelTekoopgezet" HeaderText="Tekoopgezet" SortExpression="ArtikelTekoopgezet" />
            <asp:BoundField DataField="GebruikersNaam" HeaderText="Naam" SortExpression="GebruikersNaam" />
            <asp:BoundField DataField="GebruikersVoornaam" HeaderText="Voornaam" SortExpression="GebruikersVoornaam" />
            <asp:BoundField DataField="GebruikersEmail" HeaderText="Email" SortExpression="GebruikersEmail" />
            <asp:BoundField DataField="GebruikersGSM" HeaderText="GSM" SortExpression="GebruikersGSM" />
        </Columns>
        <EditRowStyle CssClass="GridViewEditRow" />
    </asp:GridView>

    <asp:SqlDataSource ID="MijnDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:SvShopInternString %>" ProviderName="<%$ ConnectionStrings:SvShopInternString.ProviderName %>" SelectCommand="SELECT tblArtikel.ArtikelBeschrijving, tblArtikel.ArtikelPrijs, tblArtikel.ArtikelAankoopdatum, tblArtikel.ArtikelTekoopgezet, tblGebruiker.GebruikersNaam, tblGebruiker.GebruikersVoornaam, tblGebruiker.GebruikersEmail, tblGebruiker.GebruikersGSM FROM ((tblArtikel INNER JOIN tblGebruiker ON tblArtikel.GebruikersID = tblGebruiker.GebruikersID) INNER JOIN tblRubriek ON tblArtikel.RubriekID = tblRubriek.RubriekID) WHERE (tblGebruiker.GebruikersEmail = '@Email')"></asp:SqlDataSource>

</div>
</asp:Content>

这是浏览器视图。 Browser View

问题应该在这行代码中。

<asp:SqlDataSource ID="MijnDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:SvShopInternString %>" ProviderName="<%$ ConnectionStrings:SvShopInternString.ProviderName %>" SelectCommand="SELECT tblArtikel.ArtikelBeschrijving, tblArtikel.ArtikelPrijs, tblArtikel.ArtikelAankoopdatum, tblArtikel.ArtikelTekoopgezet, tblGebruiker.GebruikersNaam, tblGebruiker.GebruikersVoornaam, tblGebruiker.GebruikersEmail, tblGebruiker.GebruikersGSM FROM ((tblArtikel INNER JOIN tblGebruiker ON tblArtikel.GebruikersID = tblGebruiker.GebruikersID) INNER JOIN tblRubriek ON tblArtikel.RubriekID = tblRubriek.RubriekID) WHERE (tblGebruiker.GebruikersEmail = '@Email')"></asp:SqlDataSource>

参数     @电子邮件 使用以下代码从上面的文本框中获取其值:

Protected Sub txtMijnEmail_TextChanged(sender As Object, e As EventArgs) Handles txtMijnEmail.TextChanged
    MijnDataSource.SelectCommand.Replace("@Email", txtMijnEmail.Text)
GridViewMijn.DataBind()
End Sub

1 个答案:

答案 0 :(得分:1)

Overkill - 只需在SelectParameters中添加一个控制参数:

  <asp:SqlDataSource ID="MijnDataSource" runat="server" 
      ConnectionString="<%$ ConnectionStrings:SvShopInternString %>"
      ProviderName="<%$ ConnectionStrings:SvShopInternString.ProviderName %>" 

      SelectCommand="SELECT <snip> WHERE (tblGebruiker.GebruikersEmail = '@Email')">

      <SelectParameters>
          <asp:ControlParameter 
              ControlID="txtMijnEmail" 
              PropertyName="Text" 
              Name="Email">
          </asp:ControlParameter>
      </SelectParameters>

  </asp:SqlDataSource>

显然,确保您的Select命令在提供有效电子邮件时返回数据集。

另请考虑暂时设置GridViewMijn.ShowHeader="true"GridViewMijn.EmptyDataText="No Data returned"以进行调试