【问题标题】:Bind User.Identity.Name to a gridview将 User.Identity.Name 绑定到 gridview
【发布时间】:2018-09-16 19:54:21
【问题描述】:

ASP.NET 和 SQL 的新手。我很难弄清楚如何将 User.Identity.Name 绑定到 gridview。

当我使用查询测试器时,我得到了正确的数据,但是当我运行 aspx 页面时,Gridview 根本不显示。

SELECT Payment.PAY_RECEIVED, Payment.PAYMENT_DATE, Payment.PAYMENT_SUMMARY, 
Payment.USER_NAME, Schedule.SCHEDULE_ID, Schedule.SERVICE_DATE, 
Schedule.EMAIL, Schedule.ADDRESS, Schedule.FIRST_NAME, 
              Schedule.LAST_NAME, Schedule.USER_NAME AS Expr1
FROM     Payment INNER JOIN
              Schedule ON Payment.USER_NAME = Schedule.USER_NAME
WHERE  (Payment.USER_NAME = @USER_NAME)

VB 代码

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" DataKeyNames="PAID_ID">
    <Columns>
        <asp:BoundField DataField="PAID_ID" HeaderText="PAID_ID" InsertVisible="False" ReadOnly="True" SortExpression="PAID_ID" />
        <asp:BoundField DataField="PAY_RECEIVED" HeaderText="PAY_RECEIVED" SortExpression="PAY_RECEIVED" />
        <asp:BoundField DataField="PAYMENT_DATE" HeaderText="PAYMENT_DATE" SortExpression="PAYMENT_DATE" />
        <asp:BoundField DataField="PAYMENT_SUMMARY" HeaderText="PAYMENT_SUMMARY" SortExpression="PAYMENT_SUMMARY" />
        <asp:BoundField DataField="USER_NAME" HeaderText="USER_NAME" SortExpression="USER_NAME" />
    </Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="Delete" InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" SelectMethod="GetDataByCustomer" TypeName="DataSetTableAdapters.PaymentTableAdapter" UpdateMethod="Update">
    <DeleteParameters>
        <asp:Parameter Name="Original_PAID_ID" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="PAY_RECEIVED" Type="String" />
        <asp:Parameter Name="PAYMENT_DATE" Type="DateTime" />
        <asp:Parameter Name="PAYMENT_SUMMARY" Type="String" />
        <asp:Parameter Name="USER_NAME" Type="String" />
    </InsertParameters>
    <SelectParameters>
        <asp:ProfileParameter DefaultValue="e.InputParamater[&quot;USER_NAME&quot;] = HttpContext.Current.User.Name" Name="USER_NAME" PropertyName="USER_NAME" Type="String" />
    </SelectParameters>

如何让对象数据源读取 User.Identity.Name?

【问题讨论】:

  • VBA 与这个问题有什么关系?你是说 VB.NET 吗?
  • 另外,...VB 代码在哪里?显然,如果您运行此查询并获得正确的数据,则问题不在于查询。请参阅minimal reproducible example
  • @MathieuGuindon 抱歉,我忘记添加 VB 代码并标记了错误的东西。

标签: sql asp.net vb.net


【解决方案1】:

想出了一个解决方案。首先,我从对象数据源切换到 SQL。

    <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:DatabaseConnectionString %>" SelectCommand="SELECT * FROM [Schedule] WHERE ([USER_NAME] = @USER_NAME)">
    <SelectParameters>
        <asp:Parameter Name="USER_NAME" Type="String" />
    </SelectParameters>
</asp:SqlDataSource>

进入 aspx.vb 页面并放入它,它就像一个魅力

    Private Sub SqlDataSource2_Selecting(sender As Object, e As SqlDataSourceSelectingEventArgs) Handles SqlDataSource2.Selecting
    e.Command.Parameters("@USER_NAME").Value = User.Identity.Name
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 2013-04-29
    • 2011-07-09
    • 2011-04-05
    • 2012-05-09
    • 2013-05-09
    • 1970-01-01
    相关资源
    最近更新 更多