2008年4月9日 星期三

datagrid中n的倍數列變底色

datagrid中5的倍數列變底色:

忘了在那看到:

請試著在 DataGrid 的 ItemCreated 中加入以下程式:
C#:

private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) {
if ( (e.Item.ItemIndex%5) == 4 ) {
foreach( TableCell tc in e.Item.Cells )
tc.BackColor = Color.Red;
}
}

VB:

Private Sub dg1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dg1.ItemDataBound
If ((e.Item.ItemIndex + 1) Mod 10 = 0) Then
e.Item.BackColor = Color.Red
End If
End Sub


後來我有用到的是在datagrid DataBind 之後:
去設定背景顏色:

For i = 0 To grdResults.Items.Count - 1
Dim state As String = CType(grdResults.Items(i).Cells(0).FindControl("field_order"), Label).Text.Trim
If state = "1" Then
grdResults.Items(i).BackColor = Color.LightGray
End If
Next i

其中field_order欄位內資料事先已存入"1" 或 "0"
也可以用來enabled/disabled欄位:

For i = 0 To grdResults.Items.Count - 1
v_cbo = CType(grdResults.Items(i).Cells(6).FindControl("field_curr"), DropDownList)
v_cbo.Enabled = False
Dim v_prc As TextBox = CType(grdResults.Items(i).Cells(7).FindControl("field_prc"), TextBox)
v_prc.Enabled = False
Next

另外listitem改變顏色方式:
aspx:

<select id="Select1" onchange="On_Change" runat="server" onserverchange="Server_Change">
</select>

page_load:

Select1.Items.Clear()
Select1.Items.Add(New ListItem("11111", "11111"))
Select1.Items.Add(New ListItem("22222", "22222"))
Select1.Items.Add(New ListItem("33333", "33333"))
Select1.Items.Add(New ListItem("44444", "44444"))
Select1.Items.Add(New ListItem("55555", "55555"))
Select1.Items.Add(New ListItem("66666", "66666"))

Dim ii As ListItem
Dim j As Integer = 1
For Each ii In Select1.Items
If (j Mod 3 = 0) Then
ii.Attributes("style") = "COLOR: Red;" + " BACKGROUND-COLOR: White; "
End If
j = j + 1
Next

沒有留言: