一个综合查询(现在功能简化一下),我要实现一个下拉框选择数据库名
此下拉框调用TABLECOLUMNS表,这个表结构如下
id
columns表的各个列表
name表的列表中文
tablename表的名字数据如下所示
1 Title 标题 ArticleNews
2 Content 内容 ArticleNews
3 aaaa 好好好 表a
4 bbbb 妇好好 表b
这张就是记录下其它表的结构,方便载入到这个下拉框里面现在要我实现选择下拉框,DataGrid显示所选tablename=所选表名的数据,也就是说我选新闻查询时,会得到ArticleNews,这个时候DataGrid会获取ArticleNews表中的数据,但是现在问题是,它所显示的列名是英文的,但我不能显示英文,要显示中文,我想调TABLECOLUMNS表中的数据一起显示在页眉上
(注意,各表的结构不一样,字段不一样,名字也不一样,要动态加载所选表中数据,也要一起加载TABLECOLUMNS表中数据显示到一个DataGrid)请教高手解决!!!!!
此下拉框调用TABLECOLUMNS表,这个表结构如下
id
columns表的各个列表
name表的列表中文
tablename表的名字数据如下所示
1 Title 标题 ArticleNews
2 Content 内容 ArticleNews
3 aaaa 好好好 表a
4 bbbb 妇好好 表b
这张就是记录下其它表的结构,方便载入到这个下拉框里面现在要我实现选择下拉框,DataGrid显示所选tablename=所选表名的数据,也就是说我选新闻查询时,会得到ArticleNews,这个时候DataGrid会获取ArticleNews表中的数据,但是现在问题是,它所显示的列名是英文的,但我不能显示英文,要显示中文,我想调TABLECOLUMNS表中的数据一起显示在页眉上
(注意,各表的结构不一样,字段不一样,名字也不一样,要动态加载所选表中数据,也要一起加载TABLECOLUMNS表中数据显示到一个DataGrid)请教高手解决!!!!!
这样不可以嘛?
有兴趣的话,加MSN说,[email protected]
custMap.ColumnMappings.Add( "标题", "Title");custMap.ColumnMappings.Add( "中文标题", "英文字段");
.......
custDA.Fill(custDS);
to littlekeen(keen) 必须要动态实现,有没有实际一点的?custMap.ColumnMappings.Add( "标题", "Title");不可能在代码写
foreach(DataTable myTable in myDataSet.Tables){
foreach(DataColumn myColumn in myTable.Columns){
if myColumn.ColumnName == "Title"
{...custMap.ColumnMappings.Add( "标题", "Title");...} }
}}
告诉你思路,自己去实现:
由表名分别查询出两个表,分别是TABLECOLUMNS表中的相关的记录和另一个表,然后动态绑定,类似的代码如下:DataGrid dg = new DataGrid();
dg.Width = System.Web.UI.WebControls.Unit.Pixel(680);
dg.Font.Size = System.Web.UI.WebControls.FontUnit.XSmall;
dg.BorderColor = System.Drawing.Color.DarkGray;
dg.BorderStyle = System.Web.UI.WebControls.BorderStyle.None;
dg.BorderWidth = System.Web.UI.WebControls.Unit.Pixel(1);
dg.HeaderStyle.Font.Bold = true;
dg.HeaderStyle.BackColor = System.Drawing.Color.SkyBlue;DataSet ds = ...//取出要取具体的内容的表
dg.DataSource = ds.Tables[0].DefaultView;
dg.AutoGenerateColumns = false;DataSet dss = ...//取出要取标题头的内容的表//分别取出表头和绑定列。放入下面两个数组,其中的代码自己写。这两个数组长度应该是一样的(不一样就是你自己有问题了)
string [] titles;
string [] fields;
//然后有绑定
for(i=0 ;i<len ;i++)
{
System.Web.UI.WebControls.HyperLinkColumn col = new System.Web.UI.WebControls.HyperLinkColumn();
col.HeaderText = titles[i];
col.DataTextField = fields[i];
dg.Columns.Add(col);
dg.DataBind();
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) //数据绑定后事件
{
if(e.Item.ItemType==ListItemType.Header)//判定为页眉
{
for (int i=0;i<ds.Tables[0].Rows.Count;i++)//循环赋值
{
e.Item.Text=ds.Tables[0].Rows[i]["name"].ToString();.
}
}
}
更正:
e.Item.Cells[i].Text=ds.Tables[0].Rows[i]["name"].ToString();.
动态赋列头名,这样的话记得在绑定之前赋,绑定后赋无效。
2、写ItemDataBound事件。
判断每个DataTable的列名,
foreach(DataTable myTable in myDataSet.Tables){
foreach(DataColumn myColumn in myTable.Columns){
if myColumn.ColumnName == "Title"
{...custMap.ColumnMappings.Add( "标题", "Title");...} }
}}