SqlDataSource在变量后面插入代码

时间:2012-08-23 14:23:26

标签: asp.net .net 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>

我希望变量的内容能够进入Username列,所以在Button1上我设置了以下事件:OnClick =“insertUser”

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

这不起作用,我根本没有得到任何SQL错误消息,这是正确的方法吗?我哪里出错了?

2 个答案:

答案 0 :(得分:3)

Parameter更改为SessionParameter

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

答案 1 :(得分:0)

在这里,您要将参数声明为Control Parameter,然后您不需要将值分配给代码中的参数。你可以直接调用insert。