看板 Visual_Basic 關於我們 聯絡資訊
VB.NET的問題 各位前輩你們好,目前剛接觸vb.net關於資料流的部份有些疑問 請前輩們不吝指教,謝謝 問題敘述: 以sqlDataReader形式得到了DataTable("OnLine_mtr"), 之後把這個table丟入畫面中的DataGridView1中,接著我在DataGridView1中處理我的資料, 比方A<B,那麼backColor為黃底, 而AX002這個欄位值原本20100217001,我要改成31A-20100217001-0001卻會得到一個錯誤訊息 訊息為: "在DataGridView中發生下列例外狀況: System.ArgumentException:無法設定資料行'AX002'該值違反了這個資料行的 MaxLength限制" 問一:是否在sqlDataReader無法這樣修改值?因為長度已經固定了? 即使增加長度也不行DataGridView1.Columns(0).Width = 150 問二:有什麼解決的方式? 請前輩們指點,大大感謝~! Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim thisConnection As New SqlConnection("Data Source=127.0.0.1;Initial Catalog=abc;User ID=sa;Password=123123") Dim TD001, TD002, TD003, sql As String sql = "SELECT * from A_TABLE" Dim thisCommand As New SqlCommand(sql, thisConnection) Dim thisReader As SqlDataReader Try thisConnection.Open() thisReader = thisCommand.ExecuteReader() Dim dt As New DataTable("OnLine_mtr") dt.Load(thisReader) DataGridView1.DataSource = dt 'Assign New Width to DataGrid column 'DataGridView1.Columns(0).Width = 150 For i = 0 To dt.Rows.Count - 1 Form_num001 = dt.Rows(i).Item("AX001").ToString() Form_num002 = dt.Rows(i).Item("AX002").ToString() Form_num003 = dt.Rows(i).Item("AX003").ToString() DataGridView1.Rows(i).Cells(0).Value = "無錫自購" If TD001 = "" Then DataGridView1.Rows(i).Cells(1).Value = Trim(Form_num 001) & "-" & Trim(Form_num 002) Else DataGridView1.Rows(i).Cells(1).Value = Trim(Form_num 001) & "-" & Trim(Form_num 002) & "-" & Trim(Form_num 003) '--錯誤發生-- End If Next thisReader.Close() Catch ex As Exception MessageBox.Show(ex.Message) Finally thisConnection.Close() End Try End sub Private Sub customerDataGridView_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting DataGridView1.Columns(0).HeaderText = " mtr_kind" DataGridView1.Columns(1).HeaderText = " form_num" DataGridView1.Columns(2).HeaderText = " send_date" DataGridView1.Columns(3).HeaderText = " vendor_name" DataGridView1.Columns(4).HeaderText = " mtr_no" DataGridView1.Columns(5).HeaderText = " desc" DataGridView1.Columns(6).HeaderText = " amount" DataGridView1.Columns(7).HeaderText = " arrive_date" DataGridView1.Columns(8).HeaderText = " rec_amt" DataGridView1.Columns(9).HeaderText = "memo_A" DataGridView1.Columns(10).HeaderText = “memo_B" '過期則黃底 For i = 0 To DataGridView1.Rows.Count - 1 If DataGridView1.Rows(i).Cells(3).Value < String.Format("{0:yyyymmdd}", DateTime.Now) Then DataGridView1.Rows(i).DefaultCellStyle.BackColor = Color.Yellow End If Next End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.244.57.50
hjt00:你要不要考慮在Datatable做,然後噴給GridView顯示?? 01/06 22:12
iconograph:不好意思,請問DataTable要怎麼去處理欄位A&"-"&B 01/06 22:31
horngsh:用"噴"這個字, 真有意思。 01/08 09:09
horngsh:據我所知, DataReader進來的記錄是唯讀的... 01/08 11:38
cawQQ:推樓上的...直接在DS當中作處理也是可以 01/08 23:50