2013-03-21 53 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