如何隐藏Gridview中的重复数据?

时间:2015-03-12 07:05:17

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

enter image description here

我如何使用gridview命令隐藏这些重复的列? 我正在使用 嵌套gridview和左外连接sqlcommand我加入了两个数据库..所以是的,这是我的下一个问题

这是我的代码

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>

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

问题不在于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);