2012-08-23 43 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作为值分配? –