2012-11-05 43 views
0

我有以下代碼綁定組合框電池,其工作原理properlly:設置的DataGridViewComboBoxCell價值

Const colIndex As Integer = 1 
     Dim dgvcombo As DataGridViewComboBoxCell 
     dgvcombo = gvMain.Rows(_rowindex).Cells("SerialNumber") 
     dtGrpBrand = getDataTable("select * from (select SSPERPSerialMaster.ProductID,SSPERPSerialMaster.SizeID,SSPERPSerialMaster.GaugeID, SSPERPSerialMaster.SerialID,SSPERPSerialMaster.SerialNumber,ISNULL(SSPERPSerialEntryOpening.Qty,0)+ISNULL(a.Stock,0) as [Closing Qty] " & _ 
         "from SSPERPProductMaster " & _ 
         "left join SSPERPSerialMaster on SSPERPSerialMaster.ProductID=SSPERPProductMaster.ProductID " & _ 
         "left join SSPERPSerialEntryOpening on SSPERPSerialEntryOpening.SerialID=SSPERPSerialMaster.SerialID and SSPERPSerialMaster.ProductID=SSPERPSerialEntryOpening.ProductID " & _ 
         "left join (select SerialId,SUM(ISNULL(case when AL='A' then Qty else - Qty end, 0)) as [Stock] from SSPERPStock group by SerialId) a on a.SerialId=SSPERPSerialMaster.SerialID) a " & _ 
         "where a.[Closing Qty]<>0 and a.ProductID=" & gvMain.Rows(_rowindex).Cells("ProductId").Value.ToString() & " and a.SizeID=" & gvMain.Rows(_rowindex).Cells("SizeId").Value.ToString() & " and a.GaugeID=" & gvMain.Rows(_rowindex).Cells("GaugeId").Value.ToString(), CompanyCon) 
     dtGrpBrand.Rows.Add() 
     dtGrpBrand.Rows(dtGrpBrand.Rows.Count - 1)("SerialNumber") = "-- Select --" 
     dtGrpBrand.Rows(dtGrpBrand.Rows.Count - 1)("SerialId") = 0 
     dgvcombo.AutoComplete = True 
     CType(gvMain.Rows(_rowindex).Cells(colIndex), DataGridViewComboBoxCell).DataSource = dtGrpBrand 
     CType(gvMain.Rows(_rowindex).Cells(colIndex), DataGridViewComboBoxCell).DisplayMember = "SerialNumber" 
     CType(gvMain.Rows(_rowindex).Cells(colIndex), DataGridViewComboBoxCell).ValueMember = "SerialId" 
     CType(gvMain.Rows(_rowindex).Cells(colIndex), DataGridViewComboBoxCell).Value = 0 

這個代碼perfectlly工作,在我的應用程序,而我有數據的插入模式,但是,當用戶從列表中選擇記錄,比我需要動態綁定「SerialNumber」的單元格, 那時候我也正確綁定datagridviewcimboboxcell通過這段代碼,它綁定我的combobox單元本身,但是當我給下面的代碼設置值時,它不工作,並給我錯誤:

gvMain.Rows(gvMain.Rows.Count - 1).Cells("SerialNumber").Value = dtrow("SerialId") 

我也曾嘗試下面的行獲取所選的值,但沒有解決辦法:

CType(gvMain.Rows(gvMain.Rows.Count - 1).Cells("SerialNumber"), DataGridViewComboBoxCell).Value = dtrow("SerialId") 

這裏gvmain是datagridview的和dtrow是數據行

+0

你得到的錯誤信息是什麼? – Ahmad

+0

參數異常的數據錯誤是未處理的 –

回答

0

dtrow("SerialId")返回一個對象。你是在價值顯然有興趣,所以儘量dtrow("SerialId").ToString

gvMain.Rows(gvMain.Rows.Count - 1).Cells("SerialNumber").Value = dtrow("SerialId").ToString 
+0

我也這樣做了,但它也不起作用 –

+0

什麼是錯誤信息? – Ahmad

+0

參數異常的數據錯誤是未處理的 –

0

DataGridViewComboboxCellDataSource財產。嘗試使用設置值:

Dim lst As New List(Of String)() 
    lst.Add(dtrow("SerialId").ToString) 
    DirectCast(DataGridView1.Rows(gvMain.Rows.Count - 1).Cells("SerialNumber"), DataGridViewComboBoxCell).DataSource = lst 

它應該解決問題。