- PR -

ASP.NET DataGridでの処理

1
投稿者投稿内容
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2007-06-14 10:44
お世話になります。
環境は.NET2003,.NETFramework1.1 ASP.NETです。

実現したい機能はDataGrid上で入力(又は選択)させたいだけなのですが。。
まず考えたのはTemplateColumnでTextBoxを配置して
OnTextChangedでPostBackさせて入力値判定して結果を返す処理です。
Postbackまではうまくいくのですがそこから結果を返す際、
アクティブな行が判定できない為結果が返せません。

次にレスポンスのことも考えDropDown形式にしようとしたのですが、
こちらはさっぱり実現できずでした。。ListItemをデータベースから持ってきて、
なおかつDataGridのデータもテーブルからBindしたいのですが。。

教えて頂けないでしょうか。
お願いします。
イオン
ベテラン
会議室デビュー日: 2005/10/18
投稿数: 81
投稿日時: 2007-06-14 16:42
DropDownListはやめました。。
やりたいことはDataGridでコードを入力させて、
その結果を同じDataGridの同じ行にセットしたいのです。
良い方法はないでしょうか?
Postbackをうまく使って実現したいのですが
よっし〜。
ベテラン
会議室デビュー日: 2007/04/17
投稿数: 89
お住まい・勤務地: 北のほうの国
投稿日時: 2007-06-15 09:36
言語がわからなかったのでとりあえず、VBですが…

Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As _ System.Web.UI.WebControls.DataGridItemEventArgs) Handles _ DataGrid1.ItemDataBound

Dim strItem As String
strItem = e.Item.Cells(x).Text 'アクティブ行のx列のデータ
--------------------
 上記のようにすればアクティブ行のデータを取得できたはず…
 あとは応用でテキストボックスを見つけて処理すればよいかと思います。

 Dim tBox As TextBox = CType(e.Item.FindControl("TextBox1"), TextBox)

 ↑こんな風だったと思います(時間がなかったので未確認です)
 
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-06-15 10:23
引用:

イオンさんの書き込み (2007-06-14 16:42) より:
DropDownListはやめました。。
やりたいことはDataGridでコードを入力させて、
その結果を同じDataGridの同じ行にセットしたいのです。
良い方法はないでしょうか?
Postbackをうまく使って実現したいのですが


自分の親をDataGridItem(行)までさかのぼって FindControl して該当のコントロールを探す形になると思います。
こんなかんじで、
コード:
    Protected Sub TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim thisTextBox As TextBox = DirectCast(sender, TextBox)
        Dim targetTextBox As TextBox = DirectCast(DirectCast(thisTextBox.Parent, TableCell).Parent, DataGridItem).FindControl("TextBox2")
        targetTextBox.Text = thisTextBox.Text
    End Sub


_________________
かるあ のメモスニペット
1

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