Cách Hiển Thị Mã Và Tên Trong Combobox Trong C# - UIT - Forum

  • Login or Sign Up
    • Logging in... Remember me Log in Forgot password or user name? or Sign Up
    • Log in with
  • If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.
Announcement Collapse No announcement yet. Cách hiển thị mã và tên trong combobox trong C# Collapse X Collapse
  • Posts
  • Latest Activity
  • Photos
  • Search
  • Page of 1
  • Filter
  • Time All Time Today Last Week Last Month
  • Show All Discussions only Photos only Videos only Links only Polls only Events only
Filtered by: Clear All new posts Previous template Next
  • haucanpop6590 haucanpop6590 Thành viên mới
    • Join Date: Nov 2012
    • Posts: 35
    • Share
    • Tweet
    #1

    [C#] Cách hiển thị mã và tên trong combobox trong C#

    08-12-2012, 17:56 Mình có 1 cái combobox!! mình muốn load dữ liệu từ bảng sanpham ( gồm masp và tensp )vào combobox này!! Mình làm thế này nhưng nó chỉ hiển thị mã mà ko hiển thị tên ai bik giúp mình với Code: DataView dv = new DataView(coso.laybang("sanpham")); cmbmahang.DataSource = dv; cmbmahang.DisplayMember = "InvtID" + " " + "InvtName"; cmbmahang.ValueMember = "InvtID"; hàm laybang mình viết trong lớp coso như thế này Code: public static DataTable laybang(string tenbang) { string sql = "select * from " + tenbang; SqlCommand cmd = new SqlCommand(sql, coso.cn); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds,tenbang); return ds.Tables[0]; } Mong mọi người giúp đỡ!! Cảm ơn nhiều!! Tags: None
  • 08520021 08520021 Đỗ Trọng Ân
    • Join Date: May 2011
    • Posts: 113
    • Share
    • Tweet
    #2 08-12-2012, 21:30 Mình viết một lớp Utils để lấy ra wrapper cho table phục vụ cho mục đích hiển thị. Hàm này có thể tùy biến với các tham số đầu vào mà cho ra field hiển thị mong muốn. Code: class TableUtils { /// <summary> /// Get wrapper table for displaying purpose! /// </summary> /// <param name="core">Original table</param> /// <param name="seperateString">A string for seperating members you want to display</param> /// <param name="diplayMember">A name for display member</param> /// <param name="args">Input members for creating display member</param> /// <returns>Display wrapper of input table</returns> public static DataTable getTableDisplayWrapper(DataTable core, string seperateString, string diplayMember, params string[] args) { DataTable wrapper = new DataTable(); // Make new display column wrapper.Columns.Add(new DataColumn(diplayMember, Type.GetType("System.String"))); // Copy columns from original table foreach(DataColumn columnCore in core.Columns) { wrapper.Columns.Add(new DataColumn(columnCore.ColumnName, columnCore.DataType)); } // Copy rows from original table with a new display cell for each row foreach(DataRow rowCore in core.Rows) { DataRow rowWrapper = wrapper.NewRow(); string displayCell = ""; // Create display cell foreach (string arg in args) { try { displayCell += rowCore[arg] + seperateString; } catch (ArgumentException) { throw new Exception("Invalid data field"); } } displayCell = displayCell.Remove(displayCell.Length - seperateString.Length); rowWrapper[diplayMember] = displayCell; // Copy cells from original row foreach (DataColumn columnCore in core.Columns) { // Avoid to make a shallow copy rowWrapper[columnCore.ColumnName] = rowCore[columnCore].ToString(); } wrapper.Rows.Add(rowWrapper); } return wrapper; } } Về nguyên tắc thì hàm ComboBox.DisplayMember là chọn field hiển thị (1 field duy nhất nhé) còn ComboBox.ValueMember là lấy về field được chọn. Do bạn set: Code: cmbmahang.DisplayMember = "InvtID" + " " + "InvtName"; Cái tham số bạn đưa vào bị coi là invalid, nên mặc định nó lấy thằng Code: cmbmahang.ValueMember = "InvtID"; để hiển thị luôn. Khi đã có được cái Wrapper như mình code rồi bạn thay cách gọi để hiển thị trên ComboBox như sau: Code: cmbmahang.ValueMember = "InvtID";DataView v = new DataView(TableUtils.getTableDisplayWrapper(coso.laybang(), " ", "InvtDisplay", "InvtID", "InvtName")); comboBox1.DataSource = v; comboBox1.DisplayMember = "InvtDisplay"; comboBox1.ValueMember = "InvtName"; Mình không rành C# lắm, với cách này nếu dữ liệu trong table không quá lớn thì performance chắc là chấp nhận được :adore: Last edited by 08520021; 08-12-2012, 21:34.

    Comment

    Post Cancel
  • haucanpop6590 haucanpop6590 Thành viên mới
    • Join Date: Nov 2012
    • Posts: 35
    • Share
    • Tweet
    #3 10-12-2012, 08:51 Xin lỗi hum qua mình ko có máy nên ko test được!! Mình làm giống hướng dẫn như trên mà lúc chạy nó không hiển thị cái j hết bạn ơi!! Cho mình hỏi cái comboBox1 có phải là cái combobox cmbmahang của mình hay là cái nào khác. Mình viết thế này mà nó ko hiển thị : Code: cmbmahang.ValueMember = "InvtID"; DataView v = new DataView(TableUtils.getTableDisplayWrapper(coso.laybang(), " ", "InvtDisplay", "InvtID", "InvtName")); cmbmahang.DataSource = v; cmbmahang.DisplayMember = "InvtDisplay"; cmbmahang.ValueMember = "InvtName"; Mình thấy có 2 dòng cmbmahang.ValueMember nên cũng hơi lạ. nên đã thử khóa 1 trong 2 dòng lại chạy thử nhưng kết quả vẫn vậy. Không bik là bị sai chổ nào giúp mình với!!

    Comment

    Post Cancel
  • 09520257 09520257 Đinh Tiến Sỹ
    • Join Date: May 2011
    • Posts: 7
    • Share
    • Tweet
    #4 10-12-2012, 08:59 làm vậy k được thì thủ công phát xem )

    Comment

    Post Cancel
  • haucanpop6590 haucanpop6590 Thành viên mới
    • Join Date: Nov 2012
    • Posts: 35
    • Share
    • Tweet
    #5 10-12-2012, 09:05 Hì!! mò một síu cuối cùng cũng bik mình lỗi chổ nào rùi!! Tại dòng Code: cmbmahang.ValueMember = "InvtID";DataView v = new DataView(TableUtils.getTableDisplayWrapper(coso.laybang(), " ", "InvtDisplay", "InvtID", "InvtName")); mình chưa cho nó bik là nó lấy dữ liệu ở bảng nào thì làm j có j để cho nó hiển thị hihi ^^ thêm 1 síu chổ này thì ok: coso.laybang() ----> coso.laybang("sanpham") Cảm ơn Đỗ Trọng Ân nhiều!!

    Comment

    Post Cancel
  • 08520021 08520021 Đỗ Trọng Ân
    • Join Date: May 2011
    • Posts: 113
    • Share
    • Tweet
    #6 11-12-2012, 15:26 Xin lỗi bạn nha, mấy bữa nay đi làm nên không onl. Vì mình code lại thử, tên comboBox cũng khác nên lúc gửi bài lên forum fix lại tên cho nó giống của bạn mà quên mất, cái sửa cái không. mà dù sao bạn cũng fix được rồi :smile:

    Comment

    Post Cancel
Previous template Next LHQC Collapse Viec lam Thuc tap Thông tin quảng cáo Thông tin quảng cáo Powered by vBulletin® Version 5.7.4 Copyright © 2024 MH Sub I, LLC dba vBulletin. All rights reserved. All times are GMT+7. This page was generated at 09:37. Working... Yes No OK OK Cancel X

Từ khóa » Gán Một Datasource Với Combobox