2013-03-21 30 views
0

我有一个页面,显示我的应用程序的组列表。组中可以有多个用户。组列表是用gridview实现的。除了组描述的列外,gridview还有一个用于添加用户的按钮。当我点击这个按钮时,groupid被传递到一个新页面,在这个页面上有另一个gridview和一个用户列表。 gridview还有一个buttonfield用于将特定用户添加到组的组ID。为此,我有一个额外的表:插入语句不插入任何数据

用户组

usergroupid 
userid 
groupid 

我的问题是,没有被插入到这个表中,执行INSERT命令,但事情似乎缺少。

这是我的代码:

标记:

<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(); 
      } 
} 

插入的方法闪光后我的用户添加到组中,但是当我观看该组的成员,没有添加用户....

+0

再次你做同样的错误 – 2013-03-21 15:32:42

+0

抱歉,但正如我所说,我是非常新的ASP和SQL,这实际上是我用这种语言写的第一个应用程序... – LeonidasFett 2013-03-21 15:38:02

+0

好的谢谢你指出。我再次阅读你的帖子,现在它的工作原理:) – LeonidasFett 2013-03-21 15:59:17

回答

0

insert命令期望输入参数@Benut zerID,你似乎没有在代码隐藏中提供。

+0

我认为BenutzerID会从Select语句中传递...我在其他查询中像这样做 – LeonidasFett 2013-03-21 15:00:01

+0

确定调试时我发现你是对的。在GridView中从所选用户传递BenutzerID(UserID)的好方法是什么? – LeonidasFett 2013-03-21 15:28:00

+0

那么,你需要在你的代码中添加这样一行:SqlDataSource1.InsertParameters.Add(“BenutzerID”,benutzerid);但我不会从哪里来的benutzerid,查询字符串可能像gruppenid? – 2013-03-21 16:37:05