2012-08-23 79 views
4

我有以下的SqlDataSource背後的SqlDataSource插入代碼變量

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:orangefreshConnectionString1 %>" 
     InsertCommand="INSERT INTO [Chat] ([Username], [Message]) VALUES (@Username, @Message)" 
     SelectCommand="SELECT [Id], [Username], [Message], [Date] FROM [Chat] ORDER BY [Id]" > 
     <InsertParameters> 
      <asp:Parameter Name="Message" Type="String" /> 
      <asp:Parameter Name="Date" Type="DateTime" /> 
      <asp:Parameter Name="Username" Type="String" /> 
     </InsertParameters> 
    </asp:SqlDataSource> 

控制以下FormView控件:

<asp:FormView ID="FormView1" runat="server" DefaultMode="Insert" 
     OnItemInserted="fv_ItemInserted" RenderOuterTable="False" 
      DataSourceID="SqlDataSource1"> 
     <InsertItemTemplate> 
      <asp:Panel ID="Panel1" runat="server" DefaultButton="Button1"> 
      <asp:TextBox ID="TextBox1" runat="server" CssClass="chattxtbox" 
      Text='<%# Bind("Message") %>' autocomplete="off"></asp:TextBox> 
     <asp:Button ID="Button1" runat="server" CommandName="insert" style="display:none" Text="Button" OnClick="insertUser"/> 
      </asp:Panel> 
     </InsertItemTemplate> 
     </asp:FormView> 

我希望能夠一個變量的內容到用戶名欄,所以在Button1的我設置以下事件:OnClick =「insertUser」

protected void insertUser(object sender, EventArgs e) 
    { 
     string username1 = User.Identity.Name; 
     SqlDataSource1.InsertParameters.Add("Username", username1); 
     SqlDataSource1.Insert(); 
    } 

雖然這不是工作,但我不' t根本就沒有得到任何SQL錯誤信息,這是否是正確的方法?我哪裏錯了?

+0

數據庫中是消息和日期所需的列嗎? –

+0

所有列都是必需的 –

+0

您可以嘗試添加消息參數並查看它是否插入? –

回答

3

更改插入ParameterSessionParameter

<InsertParameters> 
    <asp:Parameter Name="Message" Type="String" /> 
    <asp:Parameter Name="Date" Type="DateTime" /> 
    <asp:Parameter Name="Username" Type="String" /> 
    <asp:SessionParameter Name="Username" SessionField="Username" Type="String" /> 
</InsertParameters> 

而且在Page_Load中處理,

Session["Username"]=User.Identity.Name; 
+0

這聽起來不錯,但我仍然得到相同的結果......沒有任何反應。我認爲這可能是我的FormView上的東西,並按下Enter可能不會觸發,但我只是嘗試從文本框插入,它一切正常。 –

+0

它會拋出異常嗎?我想你應該刪除'Date'參數,因爲這個SQL語句 - 'INSERT INTO [聊天]([用戶名],[消息])VALUES(@Username,@Message)' – adatapost

+1

好吧,好像我有一些本地主機衝突,這個解決方案工作得很好,爲人歡呼。 –

0

這裏要聲明的參數作爲Control Parameter,然後你不需要值分配給在代碼中的參數。你可以調用插入。

+0

我如何將User.Identity.Name作爲值分配? –