- PR -

グリット内を上下キーで移動できますか?

1
投稿者投稿内容
ゆきーた
会議室デビュー日: 2006/01/13
投稿数: 4
投稿日時: 2006-01-13 14:48
こんにちは。
グリットのテンプレート列にTextBoxを配置し、
そのTextBoxの列を上下キーを使って移動したいのですが、、、、
不可能なのでしょうか?
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-13 14:52
これはASP.NETのデータグリッドのことですよね
だとしたら難しいと思いますよ

JavaScriptを使えばやって出来ないことは無いけど・・・
ゆきーた
会議室デビュー日: 2006/01/13
投稿数: 4
投稿日時: 2006-01-13 14:54
説明不足でした。

グリットは、【Webアプリ】のDataGridのことです。
Webアプリで、上下キー移動は、やっぱり無理ですよね?。。

ご意見お待ちしています。
ゆきーた
会議室デビュー日: 2006/01/13
投稿数: 4
投稿日時: 2006-01-13 15:03
かるあさん

返信ありがとうございます。
やっぱり、難しいですか?
JavaScript使っても、大変な作業になるんですよね?。。

うーーん。

ありがとうございました。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-13 19:35
DataGridのTemplate列に指定したTextBoxの名前は
DataGridの名前 + : + __ctl + インデックス + : + TextBoxの名前
になりますよね。

これが崩れないと仮定してJavaScriptを組めば出来きますが
あんまりお勧めしませんよ。
ゆきーた
会議室デビュー日: 2006/01/13
投稿数: 4
投稿日時: 2006-01-16 10:28
かるあさん

なるほどです。
とても参考になるご意見ありがとうございました。
そーですね。
やっぱり現実的ではないと思いますが、
どんな感じになるのか、ちょっと試してみます。

ありがとうございました。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2006-01-16 14:15
引用:

ゆきーたさんの書き込み (2006-01-16 10:28) より:

やっぱり現実的ではないと思いますが、
どんな感じになるのか、ちょっと試してみます。


学ぶ為に試すのは良いですが、現実的じゃぁないっすね。(^^;
(かな漢字変換中に上下キー押された場合など...を考慮すると)
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-16 16:39
作ってみたので、なんとなく投下してみる。
IE6で確認、FireFoxでは動きませんでした・・・

コード:

  var keyUp   = 38;
  var keyDown = 40;
  var token   = ":";

  var dataGridName = "";
  var textBoxName  = "";
  var lowIndex     = "";
  var highIndex    = "";

  function pageInit(dataGridName, textBoxName, logIndex, highIndex) {
    this.dataGridName = dataGridName;
    this.textBoxName  = textBoxName;
    this.lowIndex     = logIndex;
    this.highIndex    = highIndex;
  }


  /*
   * キーコード取得
  */
  function getKeyCode(e) {  
    if (document.all)                 return  event.keyCode;
    else if (document.getElementById) return (e.keyCode!=0) ? e.keyCode : e.charCode;
    else if (document.layers)         return  e.which;
  }

  /*
   * 次のコントロール
  */
  function toNext(e) {
    // カレントコントロール取得
    var event           = window.event;
    var thisControlName = event.srcElement.name;

    // 名前の構築
    var pre  = dataGridName + token + "_ctl";
    var post = token + textBoxName;
    var indexLength  = thisControlName.length - pre.length - post.length;
    var currentIndex = parseInt(thisControlName.substr(pre.length, indexLength));

    // keyDown と KeyUp の進行方向を取得 それ以外は返却
    var increase;
    var lastIndex;
    var firstIndex;
    switch (getKeyCode(e)) {
    case keyUp:    increase = -1; lastIndex = lowIndex;  firstIndex = highIndex; break;
    case keyDown:  increase = +1; lastIndex = highIndex; firstIndex = lowIndex;  break;
    default:       return;
    }

    // タブオーダーのループ
    if (currentIndex == lastIndex) {
      document.getElementById(pre + firstIndex + post).focus();
      return;
    }

    // 進行方向で最初に見つかったものをフォーカス
    for (var i = currentIndex; i != lastIndex; i += increase) {
      if ((ctls = document.getElementById(pre +  (currentIndex += increase) + post)) != null) {
        ctls.focus();
        break;
      }
    }
  }




引用:

(かな漢字変換中に上下キー押された場合など...を考慮すると)


うーん、無視で(汗
1

スキルアップ/キャリアアップ(JOB@IT)