
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんな感じではだめでしょうか?
//--保存--
//データグリッドから編集中の行を取得
DataGridItem dgi = this.DataGrid1.Items[4];
//データグリッドのセル内からテキストボックスを取得
TextBox tb = (TextBox)dgi.Cells[0].Controls[0];
//ビューステイトに保存
this.ViewState["testVal"]=tb.Text;
//--取り出し--
DataGridItem dgi = this.DataGrid1.Items[4];
TextBox tb = (TextBox)dgi.Cells[0].Controls[0];
//データグリッド内のテキストボックスにビューステイト内のテキストを反映
tb.Text=this.ViewState["testVal"].ToString();
No.3
- 回答日時:
どうもお騒がせしております。
>(1)の方法は各テキストボックスのViewStateの値を取得する方法
こちらは、下記のように出来るようです。
//ViewStateに値をセット[]の中はキーとなります。
this.ViewState["TestKey"]="12345";
//ViewState内のキーに関連付けされている値を取得
if (ViewState["TestKey"] != null)
{
//ラベルにViewState内のキー「TestKey」に関連付けられている値を表示
this.Label1.Text=ViewState["TestKey"].ToString();
}
(if文は値の取得自体には関係無いですが一応。)
>(2)の方法は、DataTableのカラムの型がintに設定されている場合、テキストボックスの内容を反映する事ができません。
こちらなのですが・・・
自分で作成したDataTableでデータを入れても再現しませんでした
○データを入れる処理
//データテーブルを作成
DataTable dt1 = new DataTable();
//カラム作成
dt1.Columns.Add("intCol",System.Type.GetType("System.Int32"));
//新しい行を作成
DataRow dr =dt1.NewRow();
//以下(1)の場合でも(2)の場合でもコンパイル時、実行時共に例外は発生しませんでした。
(1)dr["intCol"]= int.Parse("54321");
(2)dr["intCol"]= "54321";
//新しく作成した行をテーブルに追加
dt1.Rows.Add(dr);
//ViewStateに保存
this.ViewState["t"]=dt1;
○データを取得する処理
//ViewStateからデータテーブルを取得
DataTable dt1 = (DataTable)this.ViewState["t"];
if (dt1!=null)
{
//データテーブル内の0行目の「intCol」列を取得しラベルに表示
this.Label2.Text=dt1.Rows[0]["intCol"].ToString();
また、明日時間がありましたら、DataGridのItemTemplate列のテキストボックスでも
ためしてみようかなと思ってます。
(必要が無い場合にはご連絡頂けるとうれしいです)
No.2
- 回答日時:
すみません。
家に帰って改めてご質問を拝見し、自分の回答の的外れ加減に驚いてしまいました・・・
改めて、分かる範囲でちゃんと回答したいと思うのですが
以下のような内容でよろしいのでしょうか?
1.DataGridとは別のテキストボックスにデータを入力
2.ボタン押下時にテキストボックス内のデータが
DataSet(内のDataTable)に追加してよい状態であれば、行の追加
3.追加出来ない場合はテキストボックスに編集中の内容を残したいがうまくいかない
また見当違いの事を言っているようでヒヤヒヤものですが、
ご説明の補足をお願いします。
もし、コードが載せられるようでしたらお願いします。
この回答への補足
こちらの説明も足りなくてすみません。
テキストボックスは、DataGridのItemTemplate列のものです。
手順は以下のようになります。
1.ボタン押下
2.ポストバック
3.DataTableに行追加
4.DataBind()
5.HTML返信
6.編集中だったテキストボックスが元に戻ってしまう
テキストボックスを保持したい場合は、
(1)DataBind後に追加した行以外は、ViewStateで復元する
(2)3の前でテキストボックスの入力文字列をDataTableに反映しておく
どちらかの方法が必要になると思います。
しかし、(1)の方法は各テキストボックスのViewStateの値を取得する方法がわからず、(2)の方法は、DataTableのカラムの型がintに設定されている場合、テキストボックスの内容を反映する事ができません。
よろしくお願いします。
No.1
- 回答日時:
DataTableをDataBindしてるのでしょうか?
実際試した訳ではないのですが、
その場合バインド前のDataTableのカラムが
A列B列だとし、DataGridにC列を追加した場合、
もう一度A列B列しか無いDataTableにバインドすると
関連の無いC列の情報は無くなってしまうような気がします。
DataTableにもDataGridと同じC列を追加し、データを
入れるのが一番簡単かなぁと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでフォルダ内の全テキ...
-
ListViewで表示されたデータの...
-
COBOL数値転記の仕様
-
エクセルのCSV読み込みについて
-
VBA(メモリ展開)
-
エクセルでXY座標に並べられた...
-
VBA 変数名に変数を使用したい。
-
VBAのstrConv関数のUNICODE変換...
-
StrConvでUnicodeに変換出来な...
-
VBとアクセスでSQL文に変...
-
VB6で、一次元配列と二次元配列...
-
EXCEL VBA 配列デー...
-
CString型 全角半角を意識せず...
-
RGBとHSLを相互変換する際の端...
-
Dir関数で読み取り順を操作でき...
-
複数SQL発行について
-
.NET 文字コードの変換
-
SQLを発行とは?クエリの作成と...
-
SQLでフィールド番号を指定する...
-
2次元配列の初期値
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# DataTableに最後に追加した...
-
VBAコンボボックスの内容が反映...
-
TextBox内の改行
-
【C#】textBoxの指定行のデータ...
-
【VB.NET】Excelの最終行までの...
-
COBOL数値転記の仕様
-
AccessVBAでのExcelメモリ解放
-
VBAでアクセスDBからデータの取...
-
XMLでデータとして画像を指定す...
-
「Nullの使い方が不正です」の...
-
【ExcelVBA】値を変更しながら...
-
非同期のプロセス間通信(パイプ...
-
アクセスでウェブ上のデータを...
-
Excel VBAでフォルダ内の全テキ...
-
エクセルのセル最終行取得
-
batでレジストリキーから読み取...
-
データベースへのアクセス
-
vbaで出来ますか?
-
ListViewで表示されたデータの...
-
ACCESS2010で直近の日付を取得...
おすすめ情報