我正在使用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>
问题应该在这行代码中。
<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
答案 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"
以进行调试