C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: GridView の RowDataBound に飛ばない


(過去ログ 75 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■44352 / inTopicNo.1)  GridView の RowDataBound に飛ばない
  
□投稿者/ nao (39回)-(2009/12/06(Sun) 17:16:52)

分類:[.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
 
 
ご教示願います。        
引用返信 編集キー/
■44362 / inTopicNo.2)  Re[1]: GridView の RowDataBound に飛ばない
□投稿者/ もりお (137回)-(2009/12/07(Mon) 07:07:48)
No44352 (nao さん) に返信
> grid.Dispose()
原因かはわかりませんが、少し気になりましたので。
このタイミングで GridView の Dispose を明示的に呼び出しているのは
なにかしらの意図があるのでしょうか。

レンダリング後に自動的に Dispose されるはずなので
通常は明示的に呼び出す必要はありません。

自動的に Dispose されることを確認するには
GridView の派生クラスを作成してログを出力してみると善いかと思います。

Public Class LoggableGridView
    Inherits System.Web.UI.WebControls.GridView

    Public Overrides Sub Dispose()
        MyBase.Dispose()
        System.Diagnostics.Debug.WriteLine("GridView Dispose")
    End Sub
End Class

引用返信 編集キー/
■44417 / inTopicNo.3)  Re[2]: GridView の RowDataBound に飛ばない
□投稿者/ nao (40回)-(2009/12/08(Tue) 23:41:55)
No44362 (もりお さん) に返信
> ■No44352 (nao さん) に返信
>>grid.Dispose()
> 原因かはわかりませんが、少し気になりましたので。
> このタイミングで GridView の Dispose を明示的に呼び出しているのは
> なにかしらの意図があるのでしょうか。
>

いつもありがとうございます。
意図はありません・・・。
今までのプログラミングでDisposeしていたのでやっておりました。
イメージではGridのデータがClean(データがなくなる)になると思ってやっておりました。

でも、これを外したら(コメント)飛びました^^
更に、Visible=Falseにしたいところもきちんと出来ました\(o⌒∇⌒o)/

一応は解決ですが・・・
逆にDisposeってどんな時に使うものなんでしょうか?
初歩的ですいません。。。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -