2013-01-02 32 views
0

我有一個詳細信息視圖,在其中啓用了「編輯/新建」。在「新的」,以及將在數據庫行中的其他額外信息,即時通訊也試圖發送當前用戶名登錄。目前,它保持爲空。在數據庫中發送用戶名

這裏是我的代碼:

<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> 

回答

1

使用一個會話變量的用戶名在後面的代碼存儲這樣

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> 
+0

如何修改我的查詢根據會話變量?我的意思是,我將它存儲在變量中後,如何將其發送回數據庫? –

+0

從後面的代碼中添加插入參數,就像這個'AccessDataSource2.InsertParameters.Add(「User Name」,Session(「User」))' – scc

+0

或者你可以在插入參數中使用'SessionParameter'而不是'Parameter'用戶名這將是最簡單的方法 – scc

2

試試這個

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

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

    End Sub