|
分類:[.NET 全般]
ASP.NET(VB)
いつもお世話になっております。 早速ですが、SQLよりGrid表示してるのですが 値によって、Gridの列のBackcolorを変更したくRowDataBoundのイベントを 書いてるのですが、そこに飛びません(><) 当初、セルに対してFor〜Nextを使用してカラーを変更しようとしてたのですが 値の入ってる列はVisible=Falseにしたいため、Falseにするとカラー変更されなくなります。 なので、RowDataBoundのイベントによって変更しようと思ったのですが DataBind後に飛ぶはずだと思うのですが、飛びません。 Htmlも何か付け加えなきゃいけないのでしょうか?
〜Html〜 <div id="freezingDiv" style="OVERFLOW: auto; WIDTH: 974px; HEIGHT: 400px; z-index: 103; left: 8px; position: absolute; top: 184px;"> <asp:GridView ID="grid" runat="server" Style="z-index: 101; left: 0px; overflow: scroll; position: absolute; top: 0px" Height="0px" AutoGenerateColumns="False" DataMember="DefaultView" DataSourceID="ikkatu" Width="1500px" BackColor="White"> <Columns> <asp:TemplateField> <EditItemTemplate> <asp:CheckBox ID="chkb" runat="server" /> </EditItemTemplate> <ItemTemplate> <asp:CheckBox ID="chkb" runat="server" /> </ItemTemplate> <ItemStyle Width="20px" Wrap="False" /> </asp:TemplateField> <asp:BoundField DataField="正式注文No" HeaderText="正式注文No" SortExpression="正式注文No"> <ControlStyle Width="180px" /> <HeaderStyle Wrap="False" /> <ItemStyle Width="180px" Wrap="False" /> </asp:BoundField> ・ 省略 <AlternatingRowStyle HorizontalAlign="Left" VerticalAlign="Middle" /> <HeaderStyle Font-Underline="False" HorizontalAlign="Center" VerticalAlign="Middle" Wrap="False" BackColor="#FFC0FF" CssClass="Freezing" BorderStyle="Dashed" Font-Overline="False" Font-Size="9pt" Height="16px" /> <SelectedRowStyle Wrap="False" /> </asp:GridView> </div>
〜aspx.vb〜 Sub gridset() grid.Dispose()
Dim chk As Integer Dim i As Integer Dim h As Integer Dim x As Integer Dim z As Integer chk = hyoji.SelectedIndex '件数制限にチェックが入っていた場合、Top50表示 '0:注文No昇順 1:注文No降順 If kensuu.Checked = True Then ss = "select top 50" Else ss = "select" End If ss = ss & " 正式注文No,受注元コード,受注No,取纏,回次,注文主名," ss = ss & "需要先,品名,手配金額,希望納期,サポート開始日,サポート終了日,解約フラグ" ss = ss & " from TBL_一括" ss = ss & " where 解約フラグ in ('4','5','6') and 最終更新者='" & tantoCode & "'" If chk = 0 Then ss = ss & " order by 正式注文No asc,解約フラグ" ElseIf chk = 1 Then ss = ss & " order by 正式注文No desc,解約フラグ" End If Dim cmd As New SqlCommand(ss, con1) con1.Open() ikkatu.SelectCommand = ss Dim sqlcn As New SqlClient.SqlConnection sqlcn.ConnectionString = constr grid.DataBind()
'For i = 0 To grid.Rows.Count - 1 ' If Trim(grid.Rows(i).Cells(4).Text) = "" Then ' For h = 0 To 12 ' grid.Rows(i).Cells(h).BackColor = Drawing.Color.Silver ' Next ' ElseIf Trim(grid.Rows(i).Cells(13).Text) = "4" Or Trim(grid.Rows(i).Cells(13).Text) = "5" Then ' For h = 0 To 12 ' grid.Rows(i).Cells(h).BackColor = Drawing.Color.LightPink ' Next ' x = x + 1 ' ElseIf Trim(grid.Rows(i).Cells(13).Text) = "6" Then ' For h = 0 To 12 ' grid.Rows(i).Cells(h).BackColor = Drawing.Color.LightBlue ' Next ' z = z + 1 ' End If 'Next 'grid.Columns(13).Visible = False Label12.Text = "" & x & " 件" Label14.Text = "" & z & " 件" con1.Close()
End Sub
Protected Sub grid_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grid.RowDataBound If e.Row.RowType = DataControlRowType.DataRow Then Dim flg As Integer = _ Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "フラグ")) If flg = "" Then e.Row.BackColor = Drawing.Color.Silver ElseIf flg = "4" Or flg = "5" Then e.Row.BackColor = Drawing.Color.LightPink ElseIf flg = "6" Then e.Row.BackColor = Drawing.Color.LightBlue End If End If End Sub ご教示願います。
|