C# Session情報からのキャストについて

このQ&Aのポイント
  • C# Session情報からのキャストについて質問させて下さい
  • C# FormViewでWebフォームを開発しており、フォームに「カテゴリ」というDropDownListの項目があります。入力画面を開いた際に、Session情報から「カテゴリ」をデフォルト選択状態にしたいですが、キャストの部分でエラーが発生しています。
  • 対処方法を教えてください。SessionはObject型なので、Int型に変換する方法がわかりません。Sessionの値は必ず1,2,3,4のいずれかの数値が格納されています。
回答を見る
  • ベストアンサー

C# Session情報からのキャストについて。

キャストについて質問させて下さい。 C# FormViewでWebフォームを開発しております。 フォームに「カテゴリ」というDropDownListの項目があります。 入力画面を開いた際に、以下のようにSession情報から「カテゴリ」をデフォルト選択状態にしたいです。 ------ protected void Page_PreRenderComplete(object sender, EventArgs e) {    if (Session["Session_Category"] != null)    {       int Session_Category = (int)Session["Session_Category"];       ((DropDownList)FormView1.FindControl("CategoryDropDownList")).SelectedIndex = Session_Category;    } } ------ しかし実行すると、 「int Session_Category = (int)Session["Session_Category"];」の部分で 「指定されたキャストは有効ではありません。」とエラーが出ます。 キャストという事で、大変初歩的なエラーかと恐縮ではありますが、 対処方法をアドバイス頂けないでしょうか? わたくは、SessionとはObject型と認識しておりますが、 どうやったらInt型に変換できるでしょうか? 混乱してきました。 ちなみに、 ・Session["Session_Category"]の値は、必ず1,2,3,4のいずれかの数値が格納されております。 ・「using System.Web.SessionState;」は挿入しております。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Convertクラス

関連するQ&A

  • DetailsView内で、DropDownListを2つ配置して連動

    DetailsView内で、DropDownListを2つ配置して連動させる方法を教えてください。 お世話になります。全くの初心者です。(VisualStudio2005 ASP.NET2.0 ) 質問の仕方も変かもしれませんがご了承ください。 DetailsView内で、DropDownListを2つ配置して,1つ目のDropDownListの項目を選択すると,2つ目のDropDownListで項目が絞られるというのをしたく思っています。 ネットで検索してみましたが、どれもこれも初心者の私には説明が難しすぎて何を書いてあるのかが理解できません。 そんな中で以下のサイトは初心者にもわかりやすく書かれていたので参考にさせて頂いたところ、新規登録はうまく動作するようになったのですが、編集の際にはコードの記述が必要となり作業がとまってしまいました。 http://dotnetfan.org/blogs/dotnetfanblog/articles/737.aspx 記載が必要なコードは以下です。 ネット上にあったコード変換ツールを利用してVBに読み替えてみましたが「型'DataRowView'が定義されていません。」というエラーメッセージが出てしまいます。 何をどうすればいいのかわかりません。 どなたかご教授下さいますようよろしくお願いいたします。 ▼参考サイトでのコード ----------------------------------------------------------------- protected void DetailsView1_DataBound(object sender, EventArgs e) { if (DetailsView1.CurrentMode == DetailsViewMode.Edit) { ((DropDownList)DetailsView1.FindControl("kaList")).SelectedValue = ((DataRowView)DetailsView1.DataItem).Row["kaID"].ToString(); } } ----------------------------------------------------------------- ▼C#⇒VB ----------------------------------------------------------------- Protected Sub DetailsView1_DataBound(sender As Object, e As EventArgs) If DetailsView1.CurrentMode = DetailsViewMode.Edit Then DirectCast(DetailsView1.FindControl("kaList"), DropDownList).SelectedValue = DirectCast(DetailsView1.DataItem, DataRowView).Row("kaID").ToString() End If End Sub -----------------------------------------------------------------

  • ASP.Net TextChangedイベント

    お世話になります。 TextChangedイベントの引数に関しまして教えて下さい。 A ・・・ ボタン B ・・・ テキストボックス Aボタンを押したときのイベントの中に、BのテキストボックスのTextChangedイベントも実行させたいのですが、 Protected Sub A_Click(sender As Object, e As System.EventArgs)     Dim A As Button = FormView1.Row().FindControl("A")     Call B_TextChanged( A , e As System.EventArgs)     Sender は Aボタンでいいと思うのですが、     e As System.EventArgs この部分の e にはどのようなモノを入れればいいでしょうか?     (EventArgs派生クラス) と書いてあるのですが、実際どのように記述すればいいのかわかりません。 End Sub 何卒よろしくお願いいたします。

  • ASP.NET : FormView内コントロールのプロパティ取得について

    初めてVC#2005 + ASP.NETでWebシステムを作っているのですが、標題の件で行きづまっています。 具体的にいうとWebフォーム上に配置したFormView -> EditItemTemprate 内に配置したTextBoxの TextプロパティやDropDownListのSelectedIndexプロパティをFormViewの外からC#のコードで 取得したい。 分かる方がいらっしゃいましたら御教授ください。 よろしくお願いいたします。

  • dropdownlistのvalue値の取得方法について

    VS2005 WinXP pro 下のようにページ表示時にDropDownListに年を入れています。 しかし、DropDownListを何に変更してもSelectedIndexした 値が取れてしまい困っています (今なら常に2008が取れてしまう) 本当なら2009を選択したときは下の関数で 2009と表示したいのです。 お力添えお願いいたします。 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load '-------------------------------------------------------------------------------------- ' 年をコンボボックスに追加 '-------------------------------------------------------------------------------------- Dim sNum As Integer = 0 Dim y As Integer For y = 2007 To Year(Now) + 3 cmbYear.Items.Add(New ListItem(y, y)) If y = Year(Now) Then cmbYear.SelectedIndex = sNum ←ここを消すと正しく動く End If sNum += 1 Next End Sub Protected Sub btnEdit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEdit.Click '-------------------------------------------------------------------------------------- ' 選択項目の取得 '-------------------------------------------------------------------------------------- MsgBox(cmbYear.Items.Item(cmbYear.SelectedIndex).Value) 2008 MsgBox(cmbYear.SelectedValue) ←2008 どちらも2008 End Sub 以上、よろしくお願い致します。

  • フォーム間の値の渡し方

    こんにちわ。 C#で以下のようなことを実現しようとしています。 フォームA ・コンボボックスを選択⇒SelectedIndex値を変数Pへ ・フォームBを開く フォームB ・変数Pを読み込み処理 1.ここで、フォームAでSelectedIndexの値は変数Pに入っているのですが、 その値をフォームBで呼び出す方法がわかりません。 以下のコードでは、「System.Windows.Forms.FormにPの定義がありません」となってしまいます。 2.変数Pはpublicで宣言しているのですが、 それだけで全てのフォームから呼び出せる変数となるわけではないのでしょうか? ちなみに以下のようなコードにしてあります。 *********フォームA********* public int P; private void btn1_click(object sender, System.EventArgs e) { P = comboBox.SelectedIndex; F_B f1 = new F_B(); f1.ShowDialog(); } *********フォームB********* private void F_B_Load(object sender, System.EventArgs e) { switch (Owner.P) { case 0: ・・・・ case 1: ・・・・ } } どなたかアドバイスをお願いいたします。

  • C# Formの操作

    Form2 form2 ; // 子 Form Form3 form3 ; // 子 Form private void button1_Click(object sender, System.EventArgs e) { form2 = new Form2() ; this.AddOwnedForm(form2) ; // 親 Form が form2 を所有する form2.Show() ; } private void button2_Click(object sender, System.EventArgs e) { form3 = new Form3() ; this.AddOwnedForm(form3) ; // 親 Form が form3 を所有する form3.Show() ; } 上記のようにボタン一つに対して1つのFormに対する処理をするのではなく,ボタン1つに対して 複数のFormを処理する.つまり 例えば,Form1,2,3とあったとして,Form1のボタンを押してFrom2を開き,そこで何らかの処理を したものをForm1に反映する.または,From3のボタンを押してForm2を開きそこで何らかの処理を 行いForm3に反映する. この場合,Form1とForm3のどちらのFormのボタンが押されたか判断しないといけないと思うのですが,ここの処理がうまくいきません. どちらかのFormのボタンを押してForm2を表示し,どちらかのFormに反映させる所までは出来たのですが,両方の判断材料を入れて,どちらのFormのボタンを押されたか判断する際に,押されなかった方が「null」となりエラーになります. 下記にこの判断部分を掲載いたします.どなたかご教授よろしくお願いいたします. Form1 public int but = 0; public int butt1; public string DB; public string HDB; public Form2 f2 = null; private void mybutton1_Click(object sender, EventArgs e) { butt1 = 1; ・ ・ ・ public int Ye=0; private void button43_Click(object sender, EventArgs e) { butt1 = 0; From2 public partial class Form2 : Form { Form1 f1; Form3 f3; public Form2(Form1 f) { f1 = f; // メイン・フォームへの参照を保存 InitializeComponent(); } public Form2(Form3 f) { f3 = f; // メイン・フォームへの参照を保存 InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { #region int Pin1 = f1.butt1; int Pin3 = f3.butt3; Form3 Form1と基本的には同じです.

  • 仮想メソッドをoverrideすると怪しい動作

    こんにちは。C#で仮想メソッドの勉強をしています。Form1でボタンを押すとフォームが閉じるメソッドを書きました。 Form2でoverrideしてメッセージボックスを表示するようにメソッドを再定義しました。 ここで問題なのですが、Form2でcmdCloseボタンをクリックすると「閉じます」というメッセージを表示した後に、もう一度「閉じます」というメッセージが表示されます。 2回メッセージが表示されるのが腑に落ちなく、何が原因なのかお教え頂きたく思います。よろしくお願いします。 Form1 /******************************************************************************/ // フォームクローズ /******************************************************************************/ protected virtual void cmdClose_Click(object sender, EventArgs e) { this.Close(); } Form2 /******************************************************************************/ // フォームクローズ /******************************************************************************/ protected override void cmdClose_Click(object sender, EventArgs e) { MessageBox.Show("閉じます"); }

  • FormViewRowプロパティで値取得

    VWD2005 + ASP.NETでWebページ作成中で行きづまっています。 Webフォーム上に配置したFormView 内を編集し、 EditItemTemprate 内TextBoxの値 (数値の場合と文字の場合がり)取得をVBのコードで取得したいのですが御教授ください。 よろしくお願いいたします。 以下のように行うと 「FormView1.Row.FindControl("TextBox") 」の部分が 型'System.Web.UIControl'の値を'Integer'に変換できません。とエラーになります。 例: Me.TextBox1.Text = CType(FormView1.Row.FindControl("TextBox"), Integer)

  • C# 関数はどこに書くの?

    c#を始めました。 関数はどこに書けばよいのだろうと思い以下の2つのパターンを書きました。どちらも実行するとちゃんと動いています。 どちらの書き方が正しいのでしょうか?よろしくお願いいたします。 パターン1 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int a=3; int n= tasu(a); MessageBox.Show(n.ToString());   //ここに関数を書く int tasu(int a10) { return a10 - 2; } } } パターン2 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int a=3; int n= tasu(a); MessageBox.Show(n.ToString()); }   //ここに関数を書く int tasu(int a20) { return a20 -1; } }

  • C#で動的に配置したコントロール

    はじめまして 開発歴1年未満の開発者ですがよろしくお願いします。 開発環境 Visual Studio 2008 C# ASP.NET protected void Page_Load(object sender, EventArgs e) { TextBox TextBox = new TextBox(); TextBox.ID = "TextBox1"; TextBox.Text = "C# ASP.NET"; form1.Controls.Add(TextBox); } protected void Button1_Click(object sender, EventArgs e) { string strTextBox1 = ??????? } と上記のように読み込み時に、テキストボックスのみを動的に配置し、デザイナで配置したのボタンを押した際に、テキストボックスに入力された値を、取得したいのですが、方法がわかりません・・・ お忙しいとは、思いますがご回答よろしくお願いします。