我如何使用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>
答案 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);