忍者ブログ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

「DropDownList」に変更があった場合、SelectedIndexChangedが発生しない」現象。

<解決策>
「DropDownList」のプロパティ「AutoPostBack=True」に変更する。

PR
//===========================
// Version  : ASP2.0
// Language : C#
//===========================
 

DetailsViewプロパティの、EmptyDataTextにエラーメッセージを入力する。

// 【参考:どっとねっとふぁんブログ】
//
http://dotnetfan.org/blogs/dotnetfanblog/articles/632.aspx

//===========================
// Version  : ASP2.0
// Language : C#
//=========================== 


protected void GridView1_RowCreated(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
{
// テーブルが空の場合
if (e.Row.RowType == DataControlRowType.EmptyDataRow)
{
e.Row.Cells[0].Text = "データが存在しません。";
}
}

//===========================
// Version  : ASP2.0
// Language : C#
//=========================== 

// 分解文字列


// 分解文字列
string str = "aaa,bbb,ccc";
// Splitし配列に設定
string[] strArr = strObj.Split(',');

<結果>
strArr[0] = "aaa"
strArr[1] = "bbb"
strArr[2] = "ccc"


<ちなみに…>

string rtnData = "";
string strObj = obj.ToString();
string[] strArr = strObj.Split(',');

//----------------------------
// aaa,bbb,ccc
//  ↓
// text1,text2,text3
//----------------------------
foreach (string data in strArr)
{
 if (rtnData != "")
 {
  rtnData = rtnData + ",";
 }
  switch (data)
  {
    case "0":
      rtnData = rtnData + "text1";
      break;
    case "1":
      rtnData = rtnData + "text2";
      break;
    case "2":
      rtnData = rtnData + "text3";
      break;
    default:
      rtnData = rtnData + "err";
      break;
  }
}

//===========================
// Version  : ASP2.0
// Language : C#
//===========================
 

① 
GridViewコントロールに、SqlDataSourceを紐付け、
表示したいテーブル(以下:テーブルA)を読み込む。


表示の分岐を行いたいカラム(以下:カラム①)を、
列の編集」で「TemplateField」化。


テンプレートの編集」を開き、カラム①のテンプレート(ItemTemplate)に
Label」が配置されていることを確認。


Label」の「DataBindingsの編集」で、「バインド可能なプロパティ」から「Text」を選択する。
(Text以外にVisible等も、ほぼ同様の設定を行うことで複数の分岐が可能になる)


カスタムバインド」を選択し、TextBox内に「ユーザー関数名( Eval("カラム①") )」を記述。


DataBindingsの設定は以上で、OKで終了。


Templateの設定を行った「ASPX」に紐付く「ASPX.CS」内に、以下を作成する。

 <ユーザー関数例>

 /// <summary>
/// 文字列表示
/// </summary>
/// <param name="bflg"></param>
/// <returns></returns>
public object ユーザー関数名(object カラム①のObject) { string strObj = obj.ToString(); switch (strObj) { case "0": strObj = "test1"; break; case "1": strObj = "test2"; break; case "2": strObj = "test3"; break; default: strObj = "err"; break; } // 実際に表示されるものを返す return strObj; }

実行後、GridView内のカラム①が、テーブルAのデータを基に、
ユーザー関数で分岐させたテキストに変更されていれば大成功。 

// 【参考】どっとねっとふぁんBlog
// Visibleの場合のカスタムバインドの設定等を詳しくされています。
//
http://dotnetfan.org/blogs/dotnetfanblog/articles/692.aspx

 

1 2 3
> カレンダー
03 2025/04 05
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
> プロフィール
HN:
Valentine
性別:
女性
職業:
PG
> フリーエリア