Asp.net 网站的Gridview中的Select语句不工作

Asp.net 网站的Gridview中的Select语句不工作,asp.net,vb.net,visual-studio-2010,gridview,Asp.net,Vb.net,Visual Studio 2010,Gridview,我在VisualStudio2010中创建了一个网站。在网页上,我想在gridview中显示日期。当我去配置数据源时,我使用查询生成器来获取我想要的数据——也就是说,我想要显示当前登录的用户的所有记录。用户由Windows登录名确定。我的选择声明是: SELECT tblWorkHours.EmployeeName, tblWorkHours.BeginDateOff, tblWorkHours.EndDateOff, tblWorkHours.AllDay_YesNo, tblWork

我在VisualStudio2010中创建了一个网站。在网页上,我想在gridview中显示日期。当我去配置数据源时,我使用查询生成器来获取我想要的数据——也就是说,我想要显示当前登录的用户的所有记录。用户由Windows登录名确定。我的选择声明是:

SELECT tblWorkHours.EmployeeName, tblWorkHours.BeginDateOff, tblWorkHours.EndDateOff,    
tblWorkHours.AllDay_YesNo, tblWorkHours.BeginTimeOff, tblWorkHours.EndTimeOff,  
tblWorkHours.Approved, tblCodesWork.Description, tblEmployees.Login FROM tblWorkHours INNER JOIN 
tblCodesWork ON tblWorkHours.WorkCode = tblCodesWork.WorkCodeID INNER JOIN tblEmployees ON 
tblWorkHours.Employee = tblEmployees.EmployeeID WHERE (tblEmployees.Login = @username) ORDER BY 
tblWorkHours.BeginDateOff DESC
在配置数据源向导中测试查询时,查询返回正确的数据。当我运行网页时,没有gridview。我已尝试在网页中添加一个字段,以确保我获得了正确的用户名,并且效果良好。我做错了什么?任何帮助都将不胜感激

以下是我的网页代码:

<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master"   
CodeBehind="TimeOffAllByUser.aspx.vb" Inherits="timework.TimeOffAllByUser" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<asp:GridView ID="GridView1" runat="server" 
    DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True">
    <Columns>
        <asp:BoundField DataField="EmployeeName" HeaderText="EmployeeName" 
            SortExpression="EmployeeName">
        </asp:BoundField>
        <asp:BoundField DataField="BeginDateOff" 
            HeaderText="BeginDateOff" SortExpression="BeginDateOff">
        </asp:BoundField>
        <asp:BoundField DataField="EndDateOff" 
            HeaderText="EndDateOff" SortExpression="EndDateOff">
        </asp:BoundField>
        <asp:CheckBoxField DataField="AllDay_YesNo" HeaderText="AllDay_YesNo" 
            SortExpression="AllDay_YesNo">
        </asp:CheckBoxField>
        <asp:BoundField DataField="BeginTimeOff" 
            HeaderText="BeginTimeOff" SortExpression="BeginTimeOff">
        </asp:BoundField>
        <asp:BoundField DataField="EndTimeOff" 
            HeaderText="EndTimeOff" SortExpression="EndTimeOff">
        </asp:BoundField>
        <asp:CheckBoxField DataField="Approved" HeaderText="Approved" 
            SortExpression="Approved">
        </asp:CheckBoxField>
        <asp:BoundField DataField="Description" HeaderText="Description" 
            SortExpression="Description">
        </asp:BoundField>
        <asp:DynamicField DataField="Login" HeaderText="Login" />
    </Columns>
</asp:GridView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    ConnectionString="<%$ ConnectionStrings:TimeSQLConnectionString1 %>" 
    SelectCommand="SELECT tblWorkHours.EmployeeName, tblWorkHours.BeginDateOff, 
    tblWorkHours.EndDateOff, tblWorkHours.AllDay_YesNo, tblWorkHours.BeginTimeOff, 
    tblWorkHours.EndTimeOff, tblWorkHours.Approved, tblCodesWork.Description, tblEmployees.Login 
    FROM tblWorkHours INNER JOIN tblCodesWork ON tblWorkHours.WorkCode = tblCodesWork.WorkCodeID 
    INNER JOIN tblEmployees ON tblWorkHours.Employee = tblEmployees.EmployeeID WHERE 
   (tblEmployees.Login = @username) ORDER BY tblWorkHours.BeginDateOff DESC" >
    <SelectParameters>
        <asp:QueryStringParameter Name="username" 
            QueryStringField="Split(HttpContext.Current.User.Identity.Name, quot;\&quot;, ,  
            CompareMethod.Text)" 
            Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

好的,我认为问题在于您使用的是querystring参数,而在querystring字段中您使用的是表达式,这可能不起作用。你能做的是

将QueryStringParameter更改为普通参数

<asp:Parameter Name="username"  />
在选择事件中,指定参数值

Protected Sub SqlDataSource1_Selecting(ByVal sender as Object, ByVal e As SqlDataSourceSelectingEventArgs )

     Dim vusername() As String
     vusername = Split(HttpContext.Current.User.Identity.Name, "\", , CompareMethod.Text)
     e.Command.Parameters["@username"].Value=vusername(1)
End Sub  

只是想检查一下,你是否可以这样改变,以了解这是否是报价的问题?QueryStringField='SplitHttpContext.Current.User.Identity.Name、\、CompareMethod.Text'Nope-不起作用。谢谢你的建议。也尝试过:Oops-也尝试过:QueryStringField='SplitHttpContext.Current.User.Identity.Name、\、、CompareMethod.Text'我正在使用vb,在将其从c转换为vb时遇到问题。你能帮帮我吗?真管用!我只是需要稍微调整一下。e、 指挥部。Parameters@username.Value=Vuser名称1-括号不是括号。非常感谢!!!
OnSelecting="SqlDataSource1_Selecting"
Protected Sub SqlDataSource1_Selecting(ByVal sender as Object, ByVal e As SqlDataSourceSelectingEventArgs )

     Dim vusername() As String
     vusername = Split(HttpContext.Current.User.Identity.Name, "\", , CompareMethod.Text)
     e.Command.Parameters["@username"].Value=vusername(1)
End Sub