none
GridView テンプレートフィールドでの Bind 使用について RRS feed

  • 質問

  • お世話になっております。

    Gridview の テンプレートフィールド でドロップダウンリストを使っています。

    このとき、Bind がうまく使えなくて困っています。

    まず、動作概要ですが、
    DBの”sts”列に"OK"や"NO"の場合と"XXOK"の場合が存在します。
    Gridview では テンプレートフィールドに DropDownList を設定して、データを操作するようにしています。
    そして、状況に応じて "OK" と "NO" を設定して、アップデートするようにしたいと考えていますが、エラーが出て思うように行かずに困っています。

    コードは、

    <asp:DropDownList ID="ddlSTS" runat="server" DataValueField="sts" SelectedValue='<%# xxConv(Eval("sts"))%>'><asp:ListItem>OK</asp:ListItem><asp:ListItem>NO</asp:ListItem></asp:DropDownList>

    ItemList の中には"OK"と"NO"しか存在しないため、Gridview がデータをバインドするときに関数でデータを整えています。

    Protected Function xxConv(ByVal mat As Object) As String
        If mat.Substring(0, 2) = "XX" Then Return mat.Substring(2, 2)
        Return mat
    End Function

    ところが、これでデータを

    Dim tmpDDLGV As String = CType(row.FindControl("ddlSTS"), DropDownList).SelectedValue

    すると、当然ですが、データが取れないとエラーになります。

    そこで、 "Eval" を "Bind" に変えると、今度は、 "Bind" は宣言されていないというエラーが表示されます。

    <asp:DropDownList ID="ddlSTS" runat="server" DataValueField="sts" SelectedValue='<%# xxConv(Bind("sts"))%>'><asp:ListItem>OK</asp:ListItem><asp:ListItem>NO</asp:ListItem></asp:DropDownList>

    いろいろ調べてみたのですが、解決策が見つかりませんでした。

    良い解決策をご存じの方がいらっしゃいましたら、ご教示くださいますようよろしくお願いします。


    ぷら

    2014年4月23日 9:11

回答

  • SurferOnWww さま

    お世話になります。
    質問する場所ですが、新しいフォーラムになってから使い方がよくわからず、ココに投稿してしまいました。

    また、基本の環境情報ですが、

    Windows Server 2003
    VWD2008
    IE 11

    です。

    が、今回のエラーは、根本的に別のところに原因がありました。

    ちょっとコードが長くて、適切な状況説明ができず、また、ポイントがずれた質問をした上、スレッドを閉じる形になってしまい、申し訳ございませんが、これで閉じさせていただきます。


    ぷら

    • 回答としてマーク Pla 2014年4月23日 12:28
    2014年4月23日 12:28

すべての返信

  • GridView というのは ASP.NET の GridView ですよね? であれば、Visual Studio Express Edition のフォーラムより ASP.NET のフォーラムで質問した方が適切だと思います。

    それから、質問の最初にご自分の環境(OS, .NET, IIS, Visual Studio のバージョン、使っているブラウザ、Web アプリケーションプロジェクトか Web サイトプロジェクトかなど)を書いてください。

    > エラーが出て思うように行かずに困っています。

    どこでどのようなエラーが出たのか詳細に書いてください。

    コードをアップするなら適当なところで改行を入れてください。閲覧者に見やすくするという配慮をお願いします。

    話はそれからだという感じですが、パッと見た目で気づいた点のみとりあえずコメントしておきます。

    DropDownList に DataSourceID の設定がありません。また、AppendDataBoundItems="True" の設定がありません。それでいいんですか?

    2014年4月23日 10:34
  • SurferOnWww さま

    お世話になります。
    質問する場所ですが、新しいフォーラムになってから使い方がよくわからず、ココに投稿してしまいました。

    また、基本の環境情報ですが、

    Windows Server 2003
    VWD2008
    IE 11

    です。

    が、今回のエラーは、根本的に別のところに原因がありました。

    ちょっとコードが長くて、適切な状況説明ができず、また、ポイントがずれた質問をした上、スレッドを閉じる形になってしまい、申し訳ございませんが、これで閉じさせていただきます。


    ぷら

    • 回答としてマーク Pla 2014年4月23日 12:28
    2014年4月23日 12:28