从datalist / grid视图隐藏重复记录

时间:2014-05-20 18:30:12

标签: asp.net sql

我有一个数据列表,其中我显示来自两个不同表格的记录,如

string outBox = "Select DISTINCT ToUserID from OutboxMessages WHERE FromUserID = '" + Session["UserId"].ToString() + " ' ";

String inBox = "Select DISTINCT FromUserID from InboxMessages WHERE ToUserID = '" + Session["UserId"].ToString() + " ' ";

con = new SqlConnection("Data Source=(local);Initial Catalog=EventOrganizer;Integrated Security=True");
        da = new SqlDataAdapter(outBox, con);
        da.Fill(ds1, "Record");
        da = new SqlDataAdapter(inBox, con);
        da.Fill(ds2, "Record");
        ds1.Merge(ds2);
        GridView2.DataSource = ds1;
        GridView2.DataBind();
        DataList1.DataSource = ds1;
        DataList1.DataBind();
output is:
FromUserID ToUserID
3
7
            2
            7

看到7出现两次我希望它只出现一次..任何想法??

1 个答案:

答案 0 :(得分:0)

使用Original表中的过滤数据创建一个新表,并将该新表绑定到datalist。

下面的示例

首先创建一个新表

DataTable dt = new DataTable();
dt.Columns.Add("FromUserID", typeof(string));
dt.Columns.Add("ToUserID", typeof(string));

if(ds1.Tables[0].Rows.Count > 0)
{
  foreach(DataRow rw in ds1.Tables[0].Rows)
  {
     if(rw["FromUserID"] != rw["ToUserID"])
      {
        dt.Rows.Add(rw["FromUserID"].ToString(), rw["ToUserID"].ToString());
      }
      else
       {
           dt.Rows.Add(rw["FromUserID"].ToString(), "");
       }
  }
}

将这个新创建的表绑定到datalist

    DataList1.DataSource = dt;
    DataList1.DataBind();