【问题标题】:How to hide duplicate data from Gridview?如何从 Gridview 隐藏重复数据?
【发布时间】:2015-03-12 07:05:17
【问题描述】:

如何使用 gridview 命令隐藏那些重复的列? 我正在使用 嵌套 gridview 并在 sqlcommand 上离开 Outer Join 我加入了两个数据库.. 所以是的,这是我的下一个问题

这是我的代码

protected void NewConnection()
    {

        SqlCommand cmd = new SqlCommand("SELECT a.*,b.ID,b.Firstname,b.Middlename,b.Lastname,b.Friendswith,b.Amount  from [User_TBL_DB] a LEFT OUTER JOIN [Friends_TBL_DB] b ON a.ID=b.Friendswith", conn);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        da.Fill(ds);
        conn.Close();
        GridView1.DataSource = ds;
        GridView1.DataBind();
        GroupGridView(GridView1.Rows, 0,0);

        GridView1.Columns[3].Visible = false;
        GridView1.Columns[4].Visible = false;

        GridView1.Columns[7].Visible = false;
        GridView1.Columns[8].Visible = false;
        GridView1.Columns[9].Visible = false;
        GridView1.Columns[10].Visible = false;
        GridView1.Columns[11].Visible = false;
        foreach (GridViewRow Separate in GridView1.Rows)
        {
            GridView gv2 = ((GridView)Separate.FindControl("GridView2"));
            gv2.DataSource = ds;
            gv2.DataBind();

            string strfirstname = ((Label)Separate.FindControl("lblfirstname")).Text;
            string strmiddlename=((Label)Separate.FindControl("lblmiddlename")).Text;
            string strlastname = ((Label)Separate.FindControl("lbllastname")).Text;
            string strage = ((Label)Separate.FindControl("lblage")).Text;
            string strsex = ((Label)Separate.FindControl("lblsex")).Text;
            string stramount = ((Label)Separate.FindControl("lblamount")).Text;
            string strID1 = ((Label)Separate.FindControl("lblid")).Text;


            foreach (GridViewRow grouplist in gv2.Rows)

            {
                string strID2 = ((Label)grouplist.FindControl("lblfriendswith2")).Text;
                if (strID1 == strID2)
                {
                    grouplist.Visible = true;
                }
                else
                {
                    grouplist.Visible = false;
                }

            }



        }
    }

这是我的 gridview1 和 gridview2 的 asp

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
        <Columns>
            <asp:TemplateField HeaderText="Firstname" SortExpression="Firstname">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Firstname") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblfirstname" runat="server" Text='<%# Bind("Firstname") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Middlename" SortExpression="Middlename">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Middlename") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblmiddlename" runat="server" Text='<%# Bind("Middlename") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Lastname" SortExpression="Lastname">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Lastname") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lbllastname" runat="server" Text='<%# Bind("Lastname") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Age" SortExpression="Age">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Age") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblage" runat="server" Text='<%# Bind("Age") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Sex" SortExpression="Sex">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Sex") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblsex" runat="server" Text='<%# Bind("Sex") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="ID" SortExpression="ID">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox6" runat="server" Text='<%# Bind("ID") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblid" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Friendswith" SortExpression="Friendswith">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("Friendswith") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblfriendswith" runat="server" Text='<%# Bind("Friendswith") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="Amount" SortExpression="Amount">
                <EditItemTemplate>
                    <asp:TextBox ID="TextBox8" runat="server" Text='<%# Bind("Amount") %>'></asp:TextBox>
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:Label ID="lblamount" runat="server" Text='<%# Bind("Amount") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="User_Firstname">
                <ItemTemplate>
                    <asp:Label ID="lblfirstname1" runat="server" Text='<%# Bind("Firstname1") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="User_Middlename">
                <ItemTemplate>
                    <asp:Label ID="lblmiddlename1" runat="server" Text='<%# Bind("Middlename1") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="User_Lastname">
                <ItemTemplate>
                    <asp:Label ID="lbllastname1" runat="server" Text='<%# Bind("Lastname1") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="User_ID">
                <ItemTemplate>
                    <asp:Label ID="lblid1" runat="server" Text='<%# Bind("ID1") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>
            <asp:TemplateField HeaderText="YOUR FRIENDS">
                <ItemTemplate>
                    <asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False">
                        <Columns>
                            <asp:TemplateField HeaderText="Firstname" SortExpression="Firstname">
                                <EditItemTemplate>
                                    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Firstname1") %>'></asp:TextBox>
                                </EditItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="lblfirstname2" runat="server" Text='<%# Bind("Firstname1") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Middlename" SortExpression="Middlename">
                                <EditItemTemplate>
                                    <asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Middlename1") %>'></asp:TextBox>
                                </EditItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="lblmiddlename2" runat="server" Text='<%# Bind("Middlename1") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Lastname" SortExpression="Lastname">
                                <EditItemTemplate>
                                    <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Lastname1") %>'></asp:TextBox>
                                </EditItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="lbllastname2" runat="server" Text='<%# Bind("Lastname1") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Amount" SortExpression="Amount">
                                <EditItemTemplate>
                                    <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Amount") %>'></asp:TextBox>
                                </EditItemTemplate>
                                <ItemTemplate>
                                    <asp:Label ID="lblamount2" runat="server" Text='<%# Bind("Amount") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField HeaderText="Friendswith_gv2">
                                <ItemTemplate>
                                    <asp:Label ID="lblfriendswith2" runat="server" Text='<%# Bind("Friendswith") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

【问题讨论】:

  • 如果您不需要重复数据,请在查询中使用distinct
  • 这不是您的gridview 的问题,而是您的SQL query 的问题。此行为基于您拥有的数据。

标签: c# asp.net sql-server gridview


【解决方案1】:

如果您不需要重复数据,请在查询中使用distinct。 所以你的SqlCommand 应该是这样的,

 SqlCommand cmd = new SqlCommand("SELECT DISTINCT a.*,b.ID,b.Firstname,b.Middlename,b.Lastname,b.Friendswith,b.Amount  from [User_TBL_DB] a LEFT OUTER JOIN [Friends_TBL_DB] b ON a.ID=b.Friendswith", conn);

【讨论】:

    【解决方案2】:

    问题不在于您的GridView 控件,绑定到GridView 的数据才是真正的问题,因为GridView 的任务只是显示数据。执行LEFT OUTER JOIN 你会得到很多重复。使用DISTINCT 语句删除重复项:

    SqlCommand cmd = new SqlCommand("SELECT DISTINCT a.*,b.ID,b.Firstname,b.Middlename,b.Lastname,b.Friendswith,b.Amount  from [User_TBL_DB] a LEFT OUTER JOIN [Friends_TBL_DB] b ON a.ID=b.Friendswith", conn);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 2012-09-30
      • 2010-10-14
      • 2015-08-05
      • 2010-10-07
      • 2019-08-01
      • 1970-01-01
      相关资源
      最近更新 更多