当前位置:编程学习 > C#/ASP.NET >>

DataGridView怎么绑定外键数据

如题!例如:有2个表
表1:UserInfo--表名 UID-字段 UName-字段 URole-外键对应到UserRole的主键RID
     UserRole--表名 RID-字段 RName-名称
DataGridView绑定了数据表UserInfo 那么怎么绑定URole呢?? --------------------编程问答-------------------- 一般是放个Comobox column,然后指定它的SelectedValue绑定到另一个表的ID字段. --------------------编程问答-------------------- 还有其他方法吗。。!! --------------------编程问答-------------------- 这种方法不是挺自然的吗?你还可以设置DataGridView里的Comobox只有点击它时才出现下拉框。而且这样子还支持双向绑定。。。 --------------------编程问答-------------------- 你用linq to sql,他里面的实体类都做了处理,你直接在做数据源的时候处理下就可以。给你贴出代码,参考下。 --------------------编程问答-------------------- 你说SQL查时就将两个表关联起来不就行了吗? --------------------编程问答-------------------- public void BindData()
    {
        NewsManagement nm = new NewsManagement();
        tb_news[] nList = nm.getNewsInfo();

        var source = from n in nList
                     select new
                     {
                         NewsID = n.NewsID,
                         NewsDate = n.NewsDate,
                         NewsTitle = n.NewsTitle,
                         NewsCategoryName = n.tb_newscategory.NewsCategoryName
                     };

        this._newsInfoGridView.DataSource = source;
        this._newsInfoGridView.DataBind();
    } --------------------编程问答-------------------- 两种方式
1.用实体类,绑定外键对象
 class UserInfo
    {
        string uid = "";

        public string Uid
        {
            get { return uid; }
            set { uid = value; }
        }
        string uname = "";

        public string Uname
        {
            get { return uname; }
            set { uname = value; }
        }
        URole role = new URole();

        public URole Role
        {
            get { return role; }
            set { role = value; }
        }
    }
查的时候把URole也查了填充进去
绑定字段的时候<%#Eval("Role.RName")%> ,这样就可以实现绑定了。
2. 先绑定UserInfo信息,URole先空着, 然后在RowDataBound事件里面再来绑定URole --------------------编程问答-------------------- 额。 。。 。看错。 。。。是DataGridView  。。 --------------------编程问答-------------------- 实在不行,  先用DataTable把数据都拼好了直接绑上去 --------------------编程问答-------------------- 联表查询..就好了 简单方便 --------------------编程问答-------------------- union连接查询
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex==2 && e.Value is int)
    {
        int i= (int)e.Value;
        e.Value = "";
    }
}
--------------------编程问答-------------------- 学习中,顶了!! --------------------编程问答-------------------- 表关联啊  --------------------编程问答-------------------- MD ,怎么就没有一个类似 rowdatabind的事件呢 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,