SQLの所得結果によってGridViewのColumns設定内容を変更操作させる
- 題名: SQLの所得結果によってGridViewのColumns設定内容を変更操作させる
- 著者: はちまき
- 日時: 2011/04/13 16:59:47
- ID: 28461
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: SQLの所得結果によってGridViewのColumns設定内容を変更操作させる
- 著者: Mira
- 日時: 2011/04/13 18:04:52
- ID: 28462
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: SQLの所得結果によってGridViewのColumns設定内容を変更操作させる
- 著者: Mira
- 日時: 2011/04/13 18:10:20
- ID: 28463
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: SQLの所得結果によってGridViewのColumns設定内容を変更操作させる
- 著者: はちまき
- 日時: 2011/04/14 15:27:36
- ID: 28468
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[ASP.NET]
皆さま
いつも大変参考にさせて頂いております。
また難題にぶつかってしまいアドバイスをお願いいたします。
VB側でSQLを実行し、実行結果をASP側のGridView内のColumnsに設定したい。
VB側のSQLの取得結果によってGridViewのColumns設定内容を変更した。
その際にIF分岐処理とDataBinder.Evalを使用しColumnsを操作したいのですが、
想定した動きにならず困っております。
※<% If DataBinder.Eval(Container.DataItem, "checkType") = "11" Then%>
上記の方法でVB側で実施したSQLとBindした内容を取得する事ができない。
※Text='<%# DataBinder.Eval(Container.DataItem, "NG名称")
TextにはVB側で実施SQL結果が正しく設定される。
VB側で実施したSQL取得結果によってASP側のGridViewのColumnsを操作する処理を
ASP側に記述するの考え方が一般的ではないのでしょうか。
いろいろ検索しているのですが、思うようにいきません。
ご教示、アドバイスをお願いいたします。
■ASPXファイル側の処理
<asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#336666" BorderStyle="Double" BorderWidth="3px"
CellPadding="4" DataSourceID="dsNgOrderResultD" GridLines="Horizontal" Width="800px">
<EmptyDataTemplate><h3>※受注NG情報がありません!</h3></EmptyDataTemplate>
<RowStyle BackColor="White" ForeColor="#333333" />
<Columns>
<asp:BoundField DataField="チェック日" HeaderText="チェック日" SortExpression="チェック日" />
<asp:BoundField DataField="明細番号" HeaderText="明細番号" ReadOnly="True"
SortExpression="明細番号" />
<asp:TemplateField HeaderText="NG名称" SortExpression="NG名称">
<ItemTemplate>
<% If DataBinder.Eval(Container.DataItem, "checkType") = "11" Then%>
<asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "NG名称") %>'></asp:Label>
<Br/>
【
<asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "blackListId") %>'></asp:Label>
:
<asp:Label ID="Label2" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "checkTargetName") %>'></asp:Label>/
<asp:Label ID="Label3" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "blackListTypeName") %>'></asp:Label>】
<% Else%>
<asp:Label ID="Label1" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "NG名称") %>'></asp:Label>
<% End If%>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="NG文言" HeaderText="NG文言" SortExpression="NG文言" />
<asp:BoundField DataField="結果" HeaderText="結果" ReadOnly="True"
SortExpression="結果" />
</Columns>
<FooterStyle BackColor="White" ForeColor="#333333" />
<PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />
</asp:GridView>
<!-- DB&GridView -->
<asp:SqlDataSource ID="dsNgOrderResultD" runat="server"
ConnectionString="<%$ ConnectionStrings:SQLDB %>" >
</asp:SqlDataSource>
■VB側の処理
''SQL実行
Try
arguments = New DataSourceSelectArguments()
sSql = ""
sSql = sSql & " select " & vbCrLf
sSql = sSql & " h.order_id , " & vbCrLf
sSql = sSql & " h.update_date as チェック日, " & vbCrLf
sSql = sSql & " IsNull( d.order_sub_id , 0 ) as 明細番号 , " & vbCrLf
sSql = sSql & " m.check_type_name as NG名称, " & vbCrLf
sSql = sSql & " m.check_mongon as NG文言, " & vbCrLf
sSql = sSql & " Case Coalesce( b.check_result , d.check_result , h.check_result ) When 0 Then 'OK' When 1 Then '承認' When 2 Then 'NG' Else 'エラー' End As 結果, " & vbCrLf
sSql = sSql & " h.check_type as checkType, " & vbCrLf
sSql = sSql & " IsNull(b.black_list_id,'') as blackListId, " & vbCrLf
sSql = sSql & " Case b.check_target When 1 Then '注文者' When 2 Then '配送先' Else '' End as checkTargetName , " & vbCrLf
sSql = sSql & " bm.black_list_type_name as blackListTypeName, " & vbCrLf
sSql = sSql & " bl.black_list_value as blackListValue, " & vbCrLf
sSql = sSql & " bl.black_list_comment as blackListComment" & vbCrLf
sSql = sSql & " " & vbCrLf
sSql = sSql & " from " & vbCrLf
・・省・・
・・略・・
Me.dsNgOrderResultD.SelectCommand = sSql
dtView = CType(Me.dsNgOrderResultD.Select(arguments), DataView)
If dtView.Count = 0 Then
''エラー表示
LabelErrMsg.Text = "NG情報がなし。<br />"
Exit Function
End If
以上です。ご教示のほど、宜しくお願い致します。