[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
「DropDownList」に変更があった場合、「SelectedIndexChangedが発生しない」現象。
<解決策>
「DropDownList」のプロパティ「AutoPostBack=True」に変更する。
// 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