初学Gridview绑定Sqldatasource,关于Gridview.Rows.Count有点问题。

Rimoers110 2016-10-11 05:32:57
想用Gridview和Sqldatasource来实现登录操作,在用Gridview.Rows.Count判断的时候,显示出的结果让我很头疼。

第一次点击按钮是这样:

什么信息都不改,继续点第二次就好了:

帮忙支支招呗?

代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\MDB.mdf;Integrated Security=True" ProviderName="System.Data.SqlClient" SelectCommand="SELECT [username], [password] FROM [accountinfo] WHERE (([username] = @username) AND ([password] = @password))">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="username" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TextBox2" Name="password" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="username" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="username" HeaderText="username" ReadOnly="True" SortExpression="username" />
<asp:BoundField DataField="password" HeaderText="password" SortExpression="password" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{}

protected void Button1_Click(object sender, EventArgs e)
{
if(GridView1.Rows.Count == 1)
{
Response.Write("登录成功");
}
else
{
Response.Write("用户名或密码错误");
}
}
}
...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rimoers110 2016-10-12
  • 打赏
  • 举报
回复
引用 4 楼 qq_29198233 的回复:
你第一次点击的时候你没发现你的Sqldatasource和GridView里面都没有数据么。第一次点击后执行了SELECTCOMMAD你的Sqldatasource才绑定了你查询到的数据,这个时候Sqldatasource和GridView里面才有数据,你就查询成功了。
怎么做才能在第一次点击按钮时让Sqldatasource绑定到查询出的数据呢?
insus 2016-10-12
  • 打赏
  • 举报
回复
这种设计登录与验证,有点怪怪的。
欧皇神降术 2016-10-12
  • 打赏
  • 举报
回复
你第一次点击的时候你没发现你的Sqldatasource和GridView里面都没有数据么。第一次点击后执行了SELECTCOMMAD你的Sqldatasource才绑定了你查询到的数据,这个时候Sqldatasource和GridView里面才有数据,你就查询成功了。
欧皇神降术 2016-10-12
  • 打赏
  • 举报
回复
只有GridView1.Rows.Count=1的时候才能登陆成功 你确定你再点击按钮前Sqldatasource里面只有一条数据?
Justin-Liu 2016-10-12
  • 打赏
  • 举报
回复
自己debug以下
欧皇神降术 2016-10-12
  • 打赏
  • 举报
回复
在判断前加一句 GridView1.DataBind();就可以了
Rimoers110 2016-10-11
  • 打赏
  • 举报
回复
来人看看呐

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧