Asp.net 将aspx变量从一个页面传递到另一个页面

Asp.net 将aspx变量从一个页面传递到另一个页面,asp.net,tsql,Asp.net,Tsql,我正在做一个实现用户和组的项目。我在一个页面的gridview中显示这些组。这个gridview有一个buttonfield,当我点击这个buttonfield时,另一个页面会打开一个用户列表。原因是我想选择将哪些用户添加到此组。唯一缺少的是如何从一个页面(显示组列表)到另一个页面(显示用户列表)获取groupid(gruppenid) 这是我的密码: 组页标记 <asp:Panel ID="pnlGruppe" ScrollBars="Both" runat="server">

我正在做一个实现用户和组的项目。我在一个页面的gridview中显示这些组。这个gridview有一个buttonfield,当我点击这个buttonfield时,另一个页面会打开一个用户列表。原因是我想选择将哪些用户添加到此组。唯一缺少的是如何从一个页面(显示组列表)到另一个页面(显示用户列表)获取groupid(gruppenid)

这是我的密码:

组页标记

<asp:Panel ID="pnlGruppe" ScrollBars="Both" runat="server">
    <asp:Button ID="btnNeueGruppe" Text="Neue Gruppe" runat="server" OnClick="btnNeueGruppe_Click" />
    <asp:GridView DataKeyNames="GruppenID" OnRowCommand="grdGruppe_RowCommand" ID="grdGruppe" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
        <Columns>
            <asp:BoundField DataField="Bezeichnung" HeaderText="Bezeichnung" SortExpression="Bezeichnung" />
            <asp:TemplateField HeaderText="Mitglieder anzeigen">
                <ItemTemplate>
                    <asp:Button ID="btnMitgliederAnzeigen" runat="server" Text="Mitglieder anzeigen" CommandName="MitgliederAnzeigen"
                        CommandArgument='<%# Eval("GruppenID") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:CommandField HeaderText="Archivieren" ButtonType="Button" ShowDeleteButton="true" DeleteText="Archivieren" />
            <asp:TemplateField HeaderText="Mitglieder anzeigen">
                <ItemTemplate>
                    <asp:Button ID="btnMitgliederHinzufuegen" runat="server" Text="Mitglieder hinzufügen" CommandName="MitgliederHinzufuegen"
                        CommandArgument='<%# Eval("GruppenID") %>' />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
        SelectCommand="SELECT [Bezeichnung], [GruppenID] FROM [Gruppe] WHERE [Archiviert] != 1"
        DeleteCommand="UPDATE Gruppe SET [Archiviert] = 1 WHERE [GruppenID] = @GruppenID; DELETE FROM BenutzerGruppe WHERE [GruppenID] = @GruppenID">            
    </asp:SqlDataSource>
    <asp:Button ID="btnZurueck" Text="Zurück" runat="server" OnClick="btnZurueck_Click" />
</asp:Panel>
将用户添加到组中的年龄标记

 <asp:Content ID="content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">           
        <asp:GridView OnRowCommand="grdBenutzer_RowCommand" DataKeyNames="BenutzerID" 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">            
     </asp:SqlDataSource>

您可以使用


您可以使用
QueryString
传递变量

protected void grdGruppe_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "MitgliederHinzufuegen")
    {
        Response.Redirect("MitgliederHinzufuegen.aspx?gruppenid=" + Convert.ToInt32(e.CommandArgument));
    }
}
并在另一页上使用以下命令检索:

Request.QueryString["gruppenid"]

好的,但是我无法访问groupid变量,因为它是在页面的.aspx部分声明的。如何在代码隐藏中访问它,以便使用重定向方法传递它?请参阅其他答案中的注释,我的请求正在运行…现在我只需要修改insert语句以使用groupidok,我的groupidok可以从页面的代码隐藏部分访问groupid以添加用户。我在SqlDataSource_插入部分中创建插入命令。但是当我调试时,它似乎没有被调用…知道为什么吗?我已经更新了上面的代码…你的意思是说你的调试器没有插入事件?没有…这让我很困惑,通常这应该可以工作,但是事件中没有任何东西被调用。中止你想实现什么?我建议您使用InsertCommand属性,就像使用SelectCommand属性一样。我该怎么做?我不知道如何将代码隐藏变量传递到页面的aspx部分。。。
protected void grdGruppe_RowCommand(object sender, GridViewCommandEventArgs e)
{
     if (e.CommandName == "MitgliederHinzufuegen")
     {
        Response.Redirect("MitgliederHinzufuegen.aspx?gruppenid" + GroupID);
     }
}
protected void grdGruppe_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "MitgliederHinzufuegen")
    {
        Response.Redirect("MitgliederHinzufuegen.aspx?gruppenid=" + Convert.ToInt32(e.CommandArgument));
    }
}
Request.QueryString["gruppenid"]