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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.44812 の関連記事表示

<< 0 >>
■44812  【GridView】標準機能 編集モードについて
□投稿者/ T_A~K_A -(2009/12/18(Fri) 11:57:31)

    分類:[ASP.NET (VB)] 

    皆さんこんばんは。
    T_A~K_Aと申します。

    現在、GridViewの編集モードについて調査しております。
    GridViewには標準で行に対して「編集/削除/キャンセル」という機能があります。
    そこで質問があります。

    1.複数行同時に編集する事は可能なのでしょうか?
    2.編集モードに入った場合、テキストボックスになりますが
      他にもドロップダウンやチェックボックスなどに変更する事は可能なのでしょうか?
    3.GridViewが左側、右側存在した場合、左側を編集モードにした場合
      連動して右側も編集モードにする事(イベントをキャッチ)は可能なのでしょうか?

    ご存知の方いらっしゃいましたらご教授願います。
親記事 /過去ログ76より / 関連記事表示
削除チェック/

■44813  Re[1]: 【GridView】標準機能 編集モードについて
□投稿者/ gtk2k -(2009/12/18(Fri) 13:01:22)
    > 1.複数行同時に編集する事は可能なのでしょうか?
    基本的には不可能と思われる。

    > 2.編集モードに入った場合、テキストボックスになりますが
    >   他にもドロップダウンやチェックボックスなどに変更する事は可能なのでしょうか?
    CheckBoxFieldを使用したり、列をテンプレート化し、ドロップダウンコントロールを配置することで可能と思われる。

    > 3.GridViewが左側、右側存在した場合、左側を編集モードにした場合
    >   連動して右側も編集モードにする事(イベントをキャッチ)は可能なのでしょうか?
    RowEditingまたはRowCommandなどのイベント時に右側のEditIndexを設定すればできると思われる。
記事No.44812 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44814  Re[2]: 【GridView】標準機能 編集モードについて
□投稿者/ T_A~K_A -(2009/12/18(Fri) 13:07:15)
    gtk2kさん返信ありがとう御座います。

    >>1.複数行同時に編集する事は可能なのでしょうか?
    > 基本的には不可能と思われる。
    私が調べた限りでは、複数行は無理だと思っています。
    やはり不可能ですよね。

    >>2.編集モードに入った場合、テキストボックスになりますが
    >>  他にもドロップダウンやチェックボックスなどに変更する事は可能なのでしょうか?
    > CheckBoxFieldを使用したり、列をテンプレート化し、ドロップダウンコントロールを配置することで可能と思われる。
    恐らく、EditItemに配置する事で可能なのかな?くらいです。
    これは可能という事ですよね。

    >>3.GridViewが左側、右側存在した場合、左側を編集モードにした場合
    >>  連動して右側も編集モードにする事(イベントをキャッチ)は可能なのでしょうか?
    > RowEditingまたはRowCommandなどのイベント時に右側のEditIndexを設定すればできると思われる。
    そうですか!!
    なるほど・・・試してみます。

    ちなみに標準だとGridViewの左側にボタンが配置されると思うのですが、
    これをチェックボックにする事はできないですかね?
記事No.44812 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44815  Re[1]: 【GridView】標準機能 編集モードについて
□投稿者/ みきぬ -(2009/12/18(Fri) 13:17:07)
    No44812 (T_A~K_A さん) に返信
    > 1.複数行同時に編集する事は可能なのでしょうか?

    可能にするために、どこまで頑張れるかにもよるけど…。

    チュートリアル : GridView Web サーバー コントロールにバインドされた行の一括更新を実行する
    http://msdn.microsoft.com/ja-jp/library/aa992036.aspx
記事No.44812 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44816  Re[2]: 【GridView】標準機能 編集モードについて
□投稿者/ T_A~K_A -(2009/12/18(Fri) 13:56:41)
    みきぬさん返信ありがとう御座います。
    >>1.複数行同時に編集する事は可能なのでしょうか?
    >
    > 可能にするために、どこまで頑張れるかにもよるけど…。
    自分でガリガリメイクしないと駄目なんですかね。

    > チュートリアル : GridView Web サーバー コントロールにバインドされた行の一括更新を実行する
    > http://msdn.microsoft.com/ja-jp/library/aa992036.aspx
    この手順だと、GridViewの標準機能を使用していない事になりますよね?
記事No.44812 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44818  Re[3]: 【GridView】標準機能 編集モードについて
□投稿者/ gtk2k -(2009/12/18(Fri) 14:51:05)
    2009/12/18(Fri) 14:51:37 編集(投稿者)

    >これをチェックボックにする事はできないですかね? 
    だからCheckBoxFieldを使用すればいいと。
    それか、テンプレート化してチェックボックスを配置すればいい。
    テンプレート化してチェックボックスを配置したほうがいろいろと手を入れることができるから
    やるならこっちがいいと思う。

    RowEditingまたはRowCommandなどのイベント時〜と書いたが、訂正する。
    これらのイベントでもやろうと思えばできるが、
    チェックボックスにチェックを入れた時に行うのならチェックボックスのCheckedChanged
    イベントのほうがいいと思われる。
    その際には、aspxでテンプレートに貼り付けたCheckBoxにrowindexなど適当な属性を書き足し
    DataItemIndexを設定することでどの(行の)チェックボックスがクリックされたのか判定する
    ことができる。
    (そもそも、基本的に単一行しか編集できないのでチェックボックスではなくラジオボタンを使用すべきだが)
    <!-- aspx 左のグリッドビューのテンプレート内のチェックボックス -->
    <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Bool列") %>' AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged" rowIndex="<%# Container.DataItemIndex %>" />

    'イベント内
    Protected Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim cb As CheckBox = CType(sender, CheckBox)
    Dim idx As Integer = CInt(cb.Attributes("rowIndex"))
    Me.RightGridView.DataSource = tblRight
    Me.RightGridView.EditIndex = idx '左のグリッドビューでクリックされた行と同じ行を編集行にする
    Me.RightGridView.DataBind()
    End Sub
記事No.44812 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44821  Re[4]: 【GridView】標準機能 編集モードについて
□投稿者/ T_A~K_A -(2009/12/18(Fri) 15:17:39)
    gtk2kさん返信ありがとう御座います。

    > >これをチェックボックにする事はできないですかね?
    > だからCheckBoxFieldを使用すればいいと。
    > それか、テンプレート化してチェックボックスを配置すればいい。
    > テンプレート化してチェックボックスを配置したほうがいろいろと手を入れることができるから
    > やるならこっちがいいと思う。
    GridViewの標準機能を使って実現したかっただけです。
    無理ならば、テンプレートフィールドにチェックボックスを配置してやるしかないって事は
    分かっています。

    > RowEditingまたはRowCommandなどのイベント時〜と書いたが、訂正する。
    > これらのイベントでもやろうと思えばできるが、
    > チェックボックスにチェックを入れた時に行うのならチェックボックスのCheckedChanged
    > イベントのほうがいいと思われる。
    どちらでも実現可能であれば、いいなと思います。

    > その際には、aspxでテンプレートに貼り付けたCheckBoxにrowindexなど適当な属性を書き足し
    > DataItemIndexを設定することでどの(行の)チェックボックスがクリックされたのか判定する
    > ことができる。
    > (そもそも、基本的に単一行しか編集できないのでチェックボックスではなくラジオボタンを使用すべきだが)
    > <!-- aspx 左のグリッドビューのテンプレート内のチェックボックス -->
    > <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Bool列") %>' AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged" rowIndex="<%# Container.DataItemIndex %>" />
    >
    > 'イベント内
    > Protected Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    > Dim cb As CheckBox = CType(sender, CheckBox)
    > Dim idx As Integer = CInt(cb.Attributes("rowIndex"))
    > Me.RightGridView.DataSource = tblRight
    > Me.RightGridView.EditIndex = idx '左のグリッドビューでクリックされた行と同じ行を編集行にする
    > Me.RightGridView.DataBind()
    > End Sub
    何となくですが分かりました。

    実現したい事は以下のような事です。
    1.1件チェック=>修正ボタン押下(対象行が修正モード)
    2.n件チェック=>修正ボタン押下(対象行が修正モード)
    3.ヘッダ固定/列固定(1つのグリッドで実現するとレコード件数が多いとレスポンスが低下する問題がある)
      ⇒ 4つのグリッドを使ってヘッダ固定/列固定を実現する(レスポンスの低下が改善される、確認済み)

    上記の通り4つのグリッドを使うのでどうやって編集モードを左右同期させればいいか悩んでいるわけです。
記事No.44812 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44822  Re[5]: 【GridView】標準機能 編集モードについて
□投稿者/ T_A~K_A -(2009/12/18(Fri) 15:40:42)
    こんばんは。T_A~K_Aです。

    gtk2kさんへ

    CheckBoxにてPostBackするようにして、gtk2kさんのサンプルソースを基にやってみました。
    1行編集時に左右編集モードになりました。成功です!!ありがとう御座います。

    但し、複数件は無理ですよね。
    チェックされている行全てを編集モードにしたのですが。
    Me.RightGridView.EditIndexプロパティは1行のみですよね。
記事No.44812 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44829  Re[6]: 【GridView】標準機能 編集モードについて
□投稿者/ gtk2k -(2009/12/18(Fri) 16:45:12)
    2009/12/18(Fri) 16:48:56 編集(投稿者)

    No44822 (T_A~K_A さん) に返信
    > こんばんは。T_A~K_Aです。
    >
    > gtk2kさんへ
    >
    > CheckBoxにてPostBackするようにして、gtk2kさんのサンプルソースを基にやってみました。
    > 1行編集時に左右編集モードになりました。成功です!!ありがとう御座います。
    >
    > 但し、複数件は無理ですよね。
    > チェックされている行全てを編集モードにしたのですが。
    > Me.RightGridView.EditIndexプロパティは1行のみですよね。
    >

    EditIndexは1行のみなのでこのプロパティは使用しない。

    右のグリッドビューで編集する列をすべてテンプレート化し、
    表示コントロールと編集コントロールの2つを貼り付ける。
    (例として、表示コントロールをLabel、編集コントロールをTextBoxとすると)
    <ItemTemplate>
    <asp:Label ID="Label1" runat="server" Text='<%# Bind("B") %>' Visible="true"></asp:Label>
    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("B") %>' Visible="false"></asp:TextBox>
    </ItemTemplate>

    左のチェックボックスでCheckedChangedイベントを拾うようにし(AutoPostBackをTrueにしないとだめ)、
    イベント時に右のグリッドビューにデータを再度バインドさせる
    Protected Sub CheckBox_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Me.RightGridView.DataSource = ViewState("tblB")
    Me.RightGridView.DataBind()
    End Sub

    右のグリッドビューのRowDataBoundにおいて、
    左のチェックボックス(ID="CheckBox1"とする)がチェックされてない場合は表示コントロールを表示し、
    チェックされている場合はされている行であれば編集コントロールを表示させる
    Protected Sub RightGridView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles RightGridView.RowDataBound
    If e.Row.RowType = DataControlRowType.DataRow Then
    Dim chk As Boolean = CType(Me.LeftGridView.Rows(e.Row.RowIndex).FindControl("CheckBox1"), CheckBox).Checked
    CType(e.Row.FindControl("Label1"), Label).Visible = Not chk
    CType(e.Row.FindControl("TextBox1"), TextBox).Visible = chk
    End If
    End Sub

    とこんな感じで、チェックボックスのON/OFFにより右を複数行編集可能に表示することが可能。
記事No.44812 のレス /過去ログ76より / 関連記事表示
削除チェック/

■44831  Re[7]: 【GridView】標準機能 編集モードについて
□投稿者/ T_A~K_A -(2009/12/18(Fri) 17:27:47)
    gtk2kさん返信ありがとう御座います。

    > 右のグリッドビューで編集する列をすべてテンプレート化し、
    > 表示コントロールと編集コントロールの2つを貼り付ける。
    > (例として、表示コントロールをLabel、編集コントロールをTextBoxとすると)
    > <ItemTemplate>
    > <asp:Label ID="Label1" runat="server" Text='<%# Bind("B") %>' Visible="true"></asp:Label>
    > <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("B") %>' Visible="false"></asp:TextBox>
    > </ItemTemplate>
    ItemTemplateに2つ定義して、表示・非表示をコントロールするという事ですね!!
    理解できました。情報提供ありがとう御座いますm(_ _)m
    さっそくやってみます!!
記事No.44812 のレス / END /過去ログ76より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -