Asp.net 网站的Gridview中的Select语句不工作
我在VisualStudio2010中创建了一个网站。在网页上,我想在gridview中显示日期。当我去配置数据源时,我使用查询生成器来获取我想要的数据——也就是说,我想要显示当前登录的用户的所有记录。用户由Windows登录名确定。我的选择声明是: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
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;\", ,
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