作者iconograph (return false;)
站内Visual_Basic
标题[.NET] 请问以DataReader的DataTable可以修改值吗
时间Thu Jan 6 21:48:30 2011
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
1F:→ hjt00:你要不要考虑在Datatable做,然後喷给GridView显示?? 01/06 22:12
2F:→ iconograph:不好意思,请问DataTable要怎麽去处理栏位A&"-"&B 01/06 22:31
3F:推 horngsh:用"喷"这个字, 真有意思。 01/08 09:09
4F:推 horngsh:据我所知, DataReader进来的记录是唯读的... 01/08 11:38
5F:推 cawQQ:推楼上的...直接在DS当中作处理也是可以 01/08 23:50