- PR -

DataGridの特定の行だけ色を変えたい

1
投稿者投稿内容
hana
ベテラン
会議室デビュー日: 2003/02/08
投稿数: 70
投稿日時: 2003-03-23 15:19
こんにちは。
現在、C#でwebアプリを開発しています。

そこで質問なんですが、
DataGridにバインドしたデータの内容で
DataGridの行の色を変え(もしくは文字の色)、なおかつその行のリンクボタンを
さわらせないようにしたいのです。
(DataGridの最初の列をボタン列にしてリンクボタンに設定しています。)
例えば、フラグが立っているものだけ、色を変えるみたいな。

別にDataGridじゃなくても、リスト系でこれができれば、
どんなコントロールでもいいんですが・・・。

そんなことって可能なのでしょうか。
教えて下さい。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-03-23 16:54
DataGridは、ボタンを押せなくする方法が分かりませんでしたが、DataListならItemDataBoundというイベントを使ってできそうです。

Datalist1というDatalistを表示。DataSourceはint型の配列とする。
aspxファイルの方は例えば
コード:
<asp:DataList id="DataList1" runat="server">

<ItemTemplate>
<asp:LinkButton runat="server" CommandName="select" ID="Button1">選択</asp:LinkButton>
<%# Container.DataItem %>
</ItemTemplate>
</asp:DataList>

とします。
ItemDataBoundというイベントに以下のメソッドを結び付けます。
コード:
private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)

{
if((int)e.Item.DataItem==8)
{
e.Item.BackColor=Color.Coral;
((LinkButton)e.Item.FindControl("Button1")).Enabled=false;
}
}


これで良さそうです。




[ メッセージ編集済み 編集者: 一郎 編集日時 2003-03-23 16:57 ]
hana
ベテラン
会議室デビュー日: 2003/02/08
投稿数: 70
投稿日時: 2003-03-23 17:12
一郎さん、ありがとうございます。

DataGridにもItemDataBoundイベントがあったので、
DataGridでもできそうです。
(DataListの使い方がイマイチわからないので・・・)

ただ、

 if((int)e.Item.DataItem==
{
 e.Item.BackColor=Color.Coral;
 ((LinkButton)e.Item.FindControl("Button1")).Enabled=false;
}

とあるのですが、「if((int)e.Item.DataItem==
の「8」とは、一体何を指定すればいいのでしょうか?

立て続けに質問してすみません・・・。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2003-03-23 17:41
失礼、説明が足りませんでした。

8に意味はありません。
intの配列ということでソースを書きましたので、バインドした配列の、値が8の行だけ色を変えるというです。
お好みの条件を設定してください。
hana
ベテラン
会議室デビュー日: 2003/02/08
投稿数: 70
投稿日時: 2003-03-25 21:23
一郎さん、いつもお世話になっております。

DataGridで希望どおりの動きにすることができました☆
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)