【问题标题】:Displaying Info. In Gridview asp.net显示信息。在 Gridview asp.net
【发布时间】:2014-02-06 20:27:26
【问题描述】:

我在 asp.net 中做一个 web 应用程序。这是一款健身应用。会员在网站上注册,插入他们一直在做的不同锻炼,他们还可以加入健身俱乐部的一组。

当我注册一个俱乐部时,我在 Gridview 中显示了该俱乐部的所有成员,并且我在 Gridview 中选择了选择按钮。当点击选择按钮时,我希望能够查看存储在 AssignPlan 表中的人们一直在做的运动,即跑步、健身等。

但是,当我显示此信息时,我使用会话来获取曾经登录过的人的具体信息。但是对于组,我希望人们看到其他人的信息,但会话不适用于我这个人谁的信息。我要调出未登录。

当我显示自己的信息时,这是我使用的代码:

SqlDataAdapter dadapter;
DataSet dset;

SqlConnection con = new SqlConnection(@"ConnectionString");
string sql = "select * from ExerciseType";

protected void Page_Load(object sender, EventArgs e)
{
    lblRegistered.Text = Session["Name"].ToString();

    if (!IsPostBack)
    {
        dadapter = new SqlDataAdapter(sql, con);
        dset = new DataSet();
        dadapter.Fill(dset);
        DropDownList1.DataSource = dset.Tables[0];
        DropDownList1.DataTextField = "ExerciseType";
        DropDownList1.DataValueField = "ExerciseType";
        DropDownList1.DataBind();

        GridViewBind();

    }
}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    GridViewBind();
}


public void GridViewBind()
{

    dadapter = new SqlDataAdapter("SELECT ExerciseName FROM ExerciseDisplay Where TypeName = '" + DropDownList1.SelectedValue + "'", con);

    dset = new DataSet();
    dadapter.Fill(dset);
    GridView1.DataSource = dset.Tables[0];
    GridView1.DataBind();

}

有没有办法做到这一点?任何帮助将不胜感激!

【问题讨论】:

  • 不确定我完全理解你想要做什么,但我认为查询字符串可以帮助你。您只需导航到以人员 ID 作为查询字符串的新页面。使用 ID 检索此人的信息。
  • 所以澄清一下,作为一个小组的所有成员都有他们自己的练习,他们已经在练习表中输入了这些练习。我正在尝试单击一个成员,这会将我带到练习表格,该表格显示他们已经插入的练习。所以是的,我认为您在检索 ID 并可能将他们的用户名放在标签上并从中检索他们的练习方面走在正确的轨道上。我将如何检索ID?我对 c# 很陌生,并且有点挣扎。你有任何可以帮助我的代码吗?
  • 就像您从会话中获取用户名一样,从您的 Gridview 中的其他用户列表中获取用户名,您的链接可能有一个查询字符串部分,例如 relateduser.aspx?username=john。这会将您带到另一个页面,您可以在其中从查询字符串中检索用户名并使用它来为用户显示练习。两个页面,一个使用会话中的用户名,另一个使用查询字符串中的用户名,但页面具有相同的逻辑,只是用户名的来源不同。 Google HyperlinkColumn for GridView 关于如何从 Gridview 中的字段生成链接

标签: c# asp.net gridview


【解决方案1】:

您有 2 个解决方案:

  1. 在第一个网格中将 DataKeyNames 属性设置为用户 ID,然后添加另一个网格并在其数据源中创建一个使用 GridView1.SelectedValue 的 Where 子句来获取用户练习。 这是一个示例,当您选择公司时,第二个 GridView 将显示其联系人

  2. 将超链接行添加到您的 GridView 哪个 Url 用于另一个表单,您将在其中显示用户的练习并将用户 ID 作为 QueryString 传递。

解决方案 1 的示例:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Comp_CompanyId" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:BoundField DataField="Comp_CompanyId" HeaderText="Comp_CompanyId" ReadOnly="True" SortExpression="Comp_CompanyId"></asp:BoundField>
        <asp:BoundField DataField="Comp_Name" HeaderText="Comp_Name" SortExpression="Comp_Name"></asp:BoundField>
        <asp:BoundField DataField="Comp_Type" HeaderText="Comp_Type" SortExpression="Comp_Type"></asp:BoundField>
        <asp:BoundField DataField="Comp_Status" HeaderText="Comp_Status" SortExpression="Comp_Status"></asp:BoundField>
        <asp:ButtonField CommandName="Select" Text="Select" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:CRMConnectionString %>' SelectCommand="SELECT [Comp_CompanyId], [Comp_Name], [Comp_Type], [Comp_Status] FROM [Company]"></asp:SqlDataSource>

<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource2">
    <Columns>
        <asp:BoundField DataField="Pers_FirstName" HeaderText="Pers_FirstName" SortExpression="Pers_FirstName" />
        <asp:BoundField DataField="Pers_LastName" HeaderText="Pers_LastName" SortExpression="Pers_LastName" />
        <asp:BoundField DataField="Pers_Salutation" HeaderText="Pers_Salutation" SortExpression="Pers_Salutation" />
        <asp:BoundField DataField="Pers_Title" HeaderText="Pers_Title" SortExpression="Pers_Title" />
        <asp:BoundField DataField="Pers_MiddleName" HeaderText="Pers_MiddleName" SortExpression="Pers_MiddleName" />
    </Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:CRMConnectionString %>" SelectCommand="SELECT [Pers_FirstName], [Pers_LastName], [Pers_Salutation], [Pers_Title], [Pers_MiddleName] FROM [Person] WHERE ([Pers_CompanyId] = @Pers_CompanyId)">
    <SelectParameters>
        <asp:ControlParameter ControlID="GridView1" Name="Pers_CompanyId" PropertyName="SelectedValue" Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>

解决方案 2 的示例:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Comp_CompanyId" DataSourceID="SqlDataSource1">
    <Columns>
        <asp:TemplateField HeaderText="Comp_CompanyId" SortExpression="Comp_CompanyId">
            <EditItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("Comp_CompanyId") %>'></asp:Label>
            </EditItemTemplate>
            <ItemTemplate>
                <asp:HyperLink ID="lnkCompany_Id" runat="server" Text='<%# Bind("Comp_CompanyId") %>' 
                    NavigateUrl='<%# Eval("Comp_CompanyId","Persons.aspx?CompanyId={0}") %>'></asp:HyperLink>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="Comp_Name" HeaderText="Comp_Name" SortExpression="Comp_Name"></asp:BoundField>
        <asp:BoundField DataField="Comp_Type" HeaderText="Comp_Type" SortExpression="Comp_Type"></asp:BoundField>
        <asp:BoundField DataField="Comp_Status" HeaderText="Comp_Status" SortExpression="Comp_Status"></asp:BoundField>
    </Columns>
</asp:GridView>
<asp:SqlDataSource runat="server" ID="SqlDataSource1" ConnectionString='<%$ ConnectionStrings:CRMConnectionString %>' SelectCommand="SELECT [Comp_CompanyId], [Comp_Name], [Comp_Type], [Comp_Status] FROM [Company]"></asp:SqlDataSource>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多