2015-11-22 33 views
0

目前,我的gridview显示我的游戏的所有注册用户,当有人登录。 我希望它只显示刚登录的用户的行,由他们的用户名指定。 这里是问题所在,因此当用户Nick当前登录时,应该只显示用户名= Nick的行。 我该怎么做?如何查看Gridview上的特定行?

<asp:SqlDataSource ID="SqlDataSource_Game" runat="server" ConnectionString="<%$ ConnectionStrings:\\MAC\HOME\DESKTOP\NIMV1.MDFConnectionString %>" SelectCommand="SELECT [UserName], [Won], [Lost], [Played] FROM [Table]"></asp:SqlDataSource> 
    <br /> 
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="UserName" DataSourceID="SqlDataSource_Game"> 
     <Columns> 
      <asp:BoundField DataField="UserName" HeaderText="UserName" ReadOnly="True" SortExpression="UserName" /> 
      <asp:BoundField DataField="Won" HeaderText="Won" SortExpression="Won" /> 
      <asp:BoundField DataField="Lost" HeaderText="Lost" SortExpression="Lost" /> 
      <asp:BoundField DataField="Played" HeaderText="Played" SortExpression="Played" /> 
     </Columns> 
    </asp:GridView> 

enter image description here

+0

为什么不动态创建'SELECT'命令来仅使用'WHERE'子句包含所需的行?就我个人而言,我在代码隐藏中执行所有的查询,并将结果与​​代码绑定,而不是使用'SqlDataSource'对象,因为我觉得它更容易。 –

回答

0

你需要保持登录状态,每当用户在loggedout登录

  1. 添加列loginStatus
  2. 当用户设定的山坳登录loginStatus = 1
  3. 当用户注销设置col loginStatus = 0

你在哪里绑定GridView控件进行查询像

Select * from tableName where loginStatus=1 
0

您可以直接隐藏所有不必要的行,在飞行了一个展现检查页面加载。我的意思是(类似于伪代码,可能有一些输入错误):

foreach (DataGridViewRow myrow in GridView1.Rows) 
{ 
    myrow.Visible=false; 
    if(myrow.Cells[0].Value == "Nick") 
    { 
     myrow.Visible=true; 
    } 
} 
相关问题