0

I have a detailsview in which i have enabled "Edit/New". On "New", along with the other extra info that will go in the database row, im trying also to send the current username logged-in. At the moment, it stays null.

Here is my code:

<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="700px" 
        AutoGenerateRows="False" DataKeyNames="ID" 
        DataSourceID="AccessDataSource2" AllowPaging="True" CssClass="mdtlstblwithhlines">
        <Fields>
            <asp:TemplateField HeaderText="Rating" SortExpression="Rating">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Rating") %>'></asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Rating") %>'></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                 <asp:Rating ID="Rating1" CurrentRating= '<%# Bind("Rating") %>'
                        runat="server" EmptyStarCssClass="EmptyStar" 
                        FilledStarCssClass="FilledStar" StarCssClass="Star" 
                        WaitingStarCssClass="WaitingStar" AutoPostBack="True" Enabled="True" 
                        EnableTheming="True" ReadOnly="True">
                    </asp:Rating>

                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="TheGood" HeaderText="TheGood" 
                SortExpression="TheGood" />
            <asp:BoundField DataField="TheBad" HeaderText="TheBad" 
                SortExpression="TheBad" />
            <asp:BoundField DataField="TheBottomLine" HeaderText="TheBottomLine" 
                SortExpression="TheBottomLine" />
            <asp:BoundField DataField="DatePosted" HeaderText="DatePosted" 
                SortExpression="DatePosted" />
            <asp:BoundField DataField="LastUpdate" HeaderText="LastUpdate" 
                SortExpression="LastUpdate" />
            <asp:TemplateField HeaderText="UserName" SortExpression="UserName" Visible="False">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("UserName") %>'></asp:TextBox>
                </EditItemTemplate>
                <InsertItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("UserName") %>' ></asp:TextBox>
                </InsertItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="Label1" runat="server" Text='<%# Bind("UserName") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

            <asp:CommandField ShowEditButton="True" ShowInsertButton="True" />
        </Fields>
    </asp:DetailsView>

   </div>


<asp:AccessDataSource ID="AccessDataSource2" runat="server" 
    DataFile="~/App_Data/ReviewSite.accdb" 
    SelectCommand="SELECT * FROM [ReviewsCam] WHERE ([ItemID] = ?)" 
        DeleteCommand="DELETE FROM [ReviewsCam] WHERE [ID] = ?" 
        InsertCommand="INSERT INTO [ReviewsCam] ([ItemID], [UserID], [UserName], [Rating], [TheGood], [TheBad], [TheBottomLine], [DatePosted], [LastUpdate]) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)" 
        UpdateCommand="UPDATE [ReviewsCam] SET [ItemID] = ?, [UserID] = ?, [UserName] = ?, [Rating] = ?, [TheGood] = ?, [TheBad] = ?, [TheBottomLine] = ?, [DatePosted] = ?, [LastUpdate] = ? WHERE [ID] = ?">
    <DeleteParameters>
        <asp:Parameter Name="ID" Type="Int32" />
    </DeleteParameters>
    <InsertParameters>
        <asp:Parameter Name="ItemID" Type="Int32" />
        <asp:Parameter Name="UserID" Type="String" />
        <asp:Parameter Name="UserName" Type="String" />
        <asp:Parameter Name="Rating" Type="Int32" />
        <asp:Parameter Name="TheGood" Type="String" />
        <asp:Parameter Name="TheBad" Type="String" />
        <asp:Parameter Name="TheBottomLine" Type="String" />
        <asp:Parameter Name="DatePosted" Type="DateTime" />
        <asp:Parameter Name="LastUpdate" Type="DateTime" />
    </InsertParameters>
    <SelectParameters>
        <asp:QueryStringParameter Name="ItemID2" QueryStringField="ID" Type="Int32" />
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameter Name="ItemID" Type="Int32" />
        <asp:Parameter Name="UserID" Type="String" />
        <asp:Parameter Name="UserName" Type="String" />
        <asp:Parameter Name="Rating" Type="Int32" />
        <asp:Parameter Name="TheGood" Type="String" />
        <asp:Parameter Name="TheBad" Type="String" />
        <asp:Parameter Name="TheBottomLine" Type="String" />
        <asp:Parameter Name="DatePosted" Type="DateTime" />
        <asp:Parameter Name="LastUpdate" Type="DateTime" />
        <asp:Parameter Name="ID" Type="Int32" />
    </UpdateParameters>
</asp:AccessDataSource>

2 Answers 2

2

Try this

  Public Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs )

        SqlDataSource1.InsertParameters("UserName").DefaultValue = User.Identity.Name

  End Sub
Sign up to request clarification or add additional context in comments.

Comments

1

Use a session variable to store the User name in code behind like this

Dim crntuser As String = ""
crntuser = Login1.UserName.ToString
Session.Add("User", crntuser)


<InsertParameters>
    <asp:Parameter Name="ItemID" Type="Int32" />
    <asp:Parameter Name="UserID" Type="String" />
    <asp:SessionParameter Name="UserName" SessionField="User" Type="String" />
    <asp:Parameter Name="Rating" Type="Int32" />
    <asp:Parameter Name="TheGood" Type="String" />
    <asp:Parameter Name="TheBad" Type="String" />
    <asp:Parameter Name="TheBottomLine" Type="String" />
    <asp:Parameter Name="DatePosted" Type="DateTime" />
    <asp:Parameter Name="LastUpdate" Type="DateTime" />
</InsertParameters>

3 Comments

how to edit my queries according to the session variable? I mean, how do i send it back to the database after i store it in the variable?
add insert parameters from code behind like this AccessDataSource2.InsertParameters.Add("User Name", Session("User"))
Or you can use SessionParameter instead of just Parameter in the insert parameters for that particular user name this will easiest way to do

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.