2017-03-01 322 views
0

我有一个列表视图数据源,它从表中获取数据,其中包含roleId,名字,姓氏,手机号码。 我有另一个表映射roleId与角色名称。如何在asp.net中进行listview数据源的自定义绑定?

在asp.net窗体中,我将数据源绑定到检索roleId,firstname和last name的表。我正在使用后端编程来做到这一点。

我的问题是,如何在listview中显示rolename而不是roleid。

我的后端代码是这样的

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!this.IsPostBack) 
    { 
     this.BindListView(); 
    } 
} 

private void BindListView() 
{ 
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand cmd = new SqlCommand()) 
     { 
      cmd.CommandText = "SELECT roleId, fName, lname,mobilenumber Country FROM Admin"; 
      cmd.Connection = con; 
      using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) 
      { 
       DataTable dt = new DataTable(); 
       sda.Fill(dt); 
       lvCustomers.DataSource = dt; 
       lvCustomers.DataBind(); 
      } 
     } 
    } 
} 

显然,这将返回整数角色ID,现在我想显示角色名称,而不是角色ID。我可以从角色表中获取角色名,角色表将角色名与角色名映射。

回答

0

在你的SQL中使用内部连接如下。这比获取数据后更新DataTable简单。

“SELECT roleName,fName,lname,mobilenumber Country FROM Admin A on join join RoleT on A.roleID = R.roleID”;

+0

如果您允许使用LINQ。你可以尝试像这样var结果=在dt1.AsEnumerable()中的table1 dt2.AsEnumerable()on(int)table1 [“CustID”] equals(int)table2 [“CustID”] select new (int)table1 [“CustID”], ColX =(int)table1 [“ColX”], ColY =(int)table1 [“ColY”], ColZ =(int)table2 [“ColZ “] }; – Sailor

相关问题