【问题标题】:Insert statement does not insert any data插入语句不插入任何数据
【发布时间】:2013-03-21 14:48:13
【问题描述】:

我有一个页面,其中显示了我的应用程序的组列表。一个组中可以有多个用户。组列表是用 gridview 实现的。除了组描述列之外,gridview 有一个用于向其添加用户的按钮。当我点击这个按钮时,groupid 被传递到一个新页面,在这个页面上有另一个带有用户列表的 gridview。网格视图还有一个按钮域,用于将该特定用户添加到组的组 ID。为此,我有一张额外的桌子:

用户组

usergroupid
userid
groupid

我的问题是,该表中没有插入任何内容,执行了插入命令但似乎缺少某些内容。

这是我的代码:

标记:

<asp:Content ID="content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">           
            <asp:GridView OnRowCommand="grdBenutzer_RowCommand" ID="grdBenutzer" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:BoundField ReadOnly="true" DataField="BenutzerID" HeaderText="ID" />                   
                    <asp:TemplateField HeaderText="Bezeichnung">
                        <ItemTemplate>
                            <%# Eval("Bezeichnung")%>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList AppendDataBoundItems="true" runat="server" ID="ddwnBezeichnung" Text='<%# Bind("Bezeichnung")%>'>
                                <asp:ListItem Text="Mitarbeiter" Value="Mitarbeiter"></asp:ListItem>
                                <asp:ListItem Text="Praktikant" Value="Praktikant"></asp:ListItem>
                                <asp:ListItem Text="Azubi" Value="Azubi"></asp:ListItem>
                                <asp:ListItem Text="Umschüler" Value="Umschüler"></asp:ListItem>
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Vorname">
                        <ItemTemplate>
                            <%# Eval("Vorname")%>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox runat="server" ID="txtVorname" Text='<%# Bind("Vorname")%>' />
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Nachname">
                        <ItemTemplate>
                            <%# Eval("Nachname")%>
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox runat="server" ID="txtNachname" Text='<%# Bind("Nachname")%>' />
                        </EditItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField ReadOnly="true" HeaderText="Geburtsdatum" DataField="Geburtsdatum" />                    
                    <asp:TemplateField HeaderText="Benutzerart">
                        <ItemTemplate>
                            <%# Eval("Benutzerart")%>
                        </ItemTemplate>                        
                    </asp:TemplateField>
                    <asp:ButtonField ButtonType="Button" HeaderText="Mitglied hinzufügen" Text="Mitglied hinzufügen" CommandName="MitgliedHinzufuegen" />
                </Columns>              
            </asp:GridView>
         <asp:SqlDataSource OnInserted="SqlDataSource1_Inserted" ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            SelectCommand="SELECT [BenutzerID], [Bezeichnung], [Vorname], [Geburtsdatum], [Nachname], [Benutzerart] FROM [Benutzer] WHERE [Archiviert] != 1"
             InsertCommand="INSERT INTO BenutzerGruppe (BenutzerID, GruppenID) VALUES (@BenutzerID, @GruppenID)">                        
         </asp:SqlDataSource>
</asp:Content>

代码隐藏:

protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e)
{
            Response.Redirect("Gruppenverwaltung.aspx");
}

protected void grdBenutzer_RowCommand(object sender, GridViewCommandEventArgs e)
{
            if (e.CommandName == "MitgliedHinzufuegen")
            {
                string gruppenid = Request.QueryString["GruppenID"];
                SqlDataSource1.InsertParameters.Add("GruppenID", gruppenid);               
                SqlDataSource1.Insert();
            }
}

insert 方法在我将用户添加到组后触发,但是当我查看组的成员时,没有添加任何用户....

【问题讨论】:

  • 你又犯了同样的错误
  • 对不起,但正如我所说,我对 asp 和 sql 非常陌生,这实际上是我用这种语言编写的第一个应用程序......
  • 好的,感谢您的指出。我再次阅读了您的帖子,现在它可以工作了:)

标签: asp.net sql-server tsql


【解决方案1】:

插入命令需要输入参数 @BenutzerID,您似乎没有在代码隐藏中提供。

【讨论】:

  • 我认为 BenutzerID 将从 Select 语句中传递...我在其他查询中也是这样做的
  • 好的,在调试时我注意到你是对的。从 GridView 中的选定用户传递 BenutzerID (UserID) 的好方法是什么?
  • 好吧,你需要在你的代码中添加这样一行:SqlDataSource1.InsertParameters.Add("BenutzerID", benutzerid);但我不知道 benutzerid 来自哪里,查询字符串可能像 gruppenid?
猜你喜欢
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多