日期:2014-05-18  浏览次数:20734 次

datagirdview数据绑定问题
各位大虾,现在遇到这么一个问题,希望大家能给出意见

数据库:
用户表: 行号 用户代码 用户名称 权限表: 行号 用户行号 权限 
  1 abc 王 1 1 e
  2 cba 刘 2 1 f
  3 1 g
  4 2 h
  5 2 i  
  6 2 k

datagirdview数据列: 用户代码 用户名称 用户权限
现在是如何将值表示为: abc 王 e|f|g
  cba 刘 h|i|k

希望各位能够帮忙给点建议,谢谢!

------解决方案--------------------
呵呵,给你一个我曾经写过的例子:

 protected void GridView_Product_RowDataBound(object sender, GridViewRowEventArgs e)
{
//check right
ImageButton img = new ImageButton();
if (e.Row.FindControl("ImageButton1") != null)
{
img = (ImageButton)e.Row.FindControl("ImageButton1");

if (HasRight(_menuId_Delete))
{
img.Visible = true;
}
else
{
img.Visible = false;
}
}

string temp = "";
string InActive = "";
string description = "";

if (e.Row.RowType == DataControlRowType.DataRow)
{
temp = e.Row.Cells[6].Text;

if (temp != null && temp != " " && temp != "")
{
InActive = Status.GetbyStatusID(temp);
description = Status.GetDescByStatusID(temp);

if (description == "")
{
description = "NULL";
}

e.Row.Cells[6].Text = InActive + "/" + description;
}
else
{
e.Row.Cells[6].Text = "N/A";
}

e.Row.Cells[3].Text = EthCategory.Range.GetbyRangeID(e.Row.Cells[3].Text);
e.Row.Cells[2].Text = EthCategory.ProductType.GetbyProductID(e.Row.Cells[2].Text);
}
}
------解决方案--------------------
用select A.用户代码, A.用户名称, B.权限 from 用户表 A left join 权限表 B on A.行号=B.行号 order by A.用户代码
从数据库中取出一个dataTable1,这个dataTable1中用户代码和用户名称有重复的,但权限没有重复,
然后再申明一个dataTable2 = new DataTable();
for(int i = 0; i < dataTable1.Rows.Count; i++)
{
dataTable2.Rows.Add(dataTable1.Rows[i]);
for(int j = i+1; j < dataTable1.Rows.Count; j++)
{
if(dataTable1.Rows[j][0].ToString() == dataTable1.Rows[i][0].ToString())
{
dataTable2.Rows[dataTable2.Rows.Count-1]["权限"] = dataTable2.Rows[dataTable2.Rows.Count-1]["权限"].ToString() + "|" + dataTable1.Rows[j]["权限"].ToString();
}
else
{
i = j - 1;
break;
}
}
}
这样用户代码相同的行就合并掉了,产生一个dataTable2;
把这个dataTable2绑定到DataGridView上去
------解决方案--------------------
C# code
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using Microsoft.ApplicationBlocks.Data;
using UDMS200S