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

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

C# と VB.NET の入門サイト

Re[8]: ASP.NET2.0 FormView内のTextbox


(過去ログ 40 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■21090 / inTopicNo.1)  ASP.NET2.0 FormView内のTextbox
  
□投稿者/ ほうせん (1回)-(2008/06/24(Tue) 17:23:28)

分類:[ASP.NET (VB)] 

ASP.NET2.0 FormViewを使用して、登録・更新を行うPGを作っています。
DB登録の際に、FormViewがInsertTemplateに移行した際に移行前のItemTemplateの値を引き継ぐ処理を作りたいのですがうまくいきません。

FindControlを使用すればできそうかなと試行錯誤しましたが解決に至りませんでした。

どなたか宜しくお願い致します。

環境、ASP.NET2.0、VB.NET、Oracle、VS2005
引用返信 編集キー/
■21114 / inTopicNo.2)  Re[1]: ASP.NET2.0 FormView内のTextbox
□投稿者/ いしだ (132回)-(2008/06/25(Wed) 11:22:53)
2008/06/25(Wed) 11:37:18 編集(投稿者)
FormViewのModeChangingイベントで値をViewState等に保持しておき、
FormViewのDataBoundイベントで値を設定してはどうでしょうか?
例えば、以下のような感じでしょうか。

protected void FormView1_ModeChanging(object sender, FormViewModeEventArgs e)
{
    switch (FormView1.CurrentMode)
    {
        case FormViewMode.ReadOnly:
            ViewState["Label1"] = (FormView1.FindControl("Label1") as Label).Text;
            break;
    }
}
protected void FormView1_DataBound(object sender, EventArgs e)
{
    switch (FormView1.CurrentMode)
    {
        case FormViewMode.Insert:
            (FormView1.FindControl("TextBox1") as TextBox).Text = (string)ViewState["Label1"];
            break;
    }
}

[編集]VBでしたね。C#で書いてしまいましたが、VBに置き換えてください。

引用返信 編集キー/
■21143 / inTopicNo.3)  Re[2]: ASP.NET2.0 FormView内のTextbox
□投稿者/ ほうせん (2回)-(2008/06/25(Wed) 16:59:54)
返信ありがとう御座います。

早速以下の様にしてみましたが、
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」
というメッセージがDataBound部分で出てしまいます。

これはキャストの対象がnullだから、という事でしょうか?

また悩んでしまっています。
どの様に修正すればよいかお教え願えないでしょうか?

Protected Sub FormView1_ModeChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.FormViewModeEventArgs) Handles FormView1.ModeChanging
If FormView1.DefaultMode = FormViewMode.ReadOnly Then
ViewState("Label1") = CType(FormView1.FindControl("Label1"), Label).Text
ViewState("Label1") = CType(FormView1.FindControl("Label1"), Label).Text
End If
End Sub
Protected Sub FormView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles FormView1.DataBound

If FormView1.DefaultMode = FormViewMode.Insert Then
CType(FormView1.FindControl("Textbox1"), TextBox).Text = ViewState("Label1")
End If

End Sub

引用返信 編集キー/
■21149 / inTopicNo.4)  Re[3]: ASP.NET2.0 FormView内のTextbox
□投稿者/ いしだ (134回)-(2008/06/25(Wed) 17:50:59)
2008/06/25(Wed) 18:03:30 編集(投稿者)

> どの様に修正すればよいかお教え願えないでしょうか?
当方ではVBで動作確認とれました。
例えば、Textbox1ではなくTextBox1だったりしませんでしょうか?
具体的にどこでエラーが発生しているのか、
CType(FormView1.FindControl("Textbox1"), TextBox).Text = ViewState("Label1")
の部分を分割して確認してみてください。

[編集]
Textbox1ではなくTextBox1
は関係ないようですね。。。
Textbox1が存在するかも確認してみてください。
引用返信 編集キー/
■21153 / inTopicNo.5)  Re[4]: ASP.NET2.0 FormView内のTextbox
□投稿者/ ほうせん (3回)-(2008/06/25(Wed) 18:14:26)
下記を実行した所、同様のエラーが出ました。

Response.Write(CType(FormView1.FindControl("金型区分TextBox"), TextBox).Text)

又、変数に対しViewState("Label1")を代入した所、問題ありませんでしたのでやはりキャストしている部分が問題ではないかと思います。

※Textbox1、Label1は実際の名前ではありません。
 分かり易くなる様置換したのですが、かえって混乱を招きましたね。
 申し訳ありません。
引用返信 編集キー/
■21154 / inTopicNo.6)  Re[5]: ASP.NET2.0 FormView内のTextbox
□投稿者/ いしだ (135回)-(2008/06/25(Wed) 18:25:07)
2008/06/25(Wed) 18:25:25 編集(投稿者)

以下のように分けてみてください。

Dim obj As Object = FormView1.FindControl("金型区分TextBox")
CType(obj, TextBox).Text = ViewState("Label1")

それでDimのところにブレークポイントを置いてF5で実行し、F10でその行を実行させてください。
objにカーソルを置くとどうなってますか?
System.Web.UI.WebControls.TextBox
になってますか?

引用返信 編集キー/
■21167 / inTopicNo.7)  Re[6]: ASP.NET2.0 FormView内のTextbox
□投稿者/ ほうせん (4回)-(2008/06/26(Thu) 09:51:48)
ご丁寧にありがとう御座います。

> それでDimのところにブレークポイントを置いてF5で実行し、F10でその行を実行させてください。
> objにカーソルを置くとどうなってますか?
> System.Web.UI.WebControls.TextBox
> になってますか?

結果はNothingでした。
DimのところとCtypeのところ、どちらもです。
引用返信 編集キー/
■21174 / inTopicNo.8)  Re[7]: ASP.NET2.0 FormView内のTextbox
□投稿者/ いしだ (136回)-(2008/06/26(Thu) 11:51:43)
#21143に示されたソースはちゃんとあってますか?
FormView1.CurrentMode
が、
FormView1.DefaultMode
になってますが。
引用返信 編集キー/
■21191 / inTopicNo.9)  Re[8]: ASP.NET2.0 FormView内のTextbox
□投稿者/ ほうせん (5回)-(2008/06/26(Thu) 15:26:47)
> #21143に示されたソースはちゃんとあってますか?
> FormView1.CurrentMode
> が、
> FormView1.DefaultMode
> になってますが。

直した所出来ました!
申し訳ありませんでした。

おかげで先に進めそうです。
ありがとう御座いました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -