私はこれについてしばらく見回しましたが、これを理解することができません。onItemDataBound
一部のクラスとスタイルを設定したいイベントのネストされたリピーターがあり<DIV>
ます。
HTML: <%# DataBinder.Eval(Container.DataItem,"sServer") %> > >
コードビハインド
protected void rpDB_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string _sql = "";
using(SqlConnection _conn = new SqlConnection(_sql))
{
_conn.Open();
DataTable _dt = new DataTable();
// Get repeater controls
Repeater rpDB_item = (Repeater)(e.Item.FindControl("rpDB_item"));
SqlCommand _cmd = new SqlCommand("", _conn);
SqlDataAdapter _da = new SqlDataAdapter(_cmd);
_da.Fill(_dt);
rpDB_item.DataSource = _dt;
rpDB_item.DataBind();
}
}
}
protected void rpDB_item_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
if (<value of dataitem("online")> == "Online")
{
((HtmlGenericControl)e.Item.FindControl("label2")).Attributes.Add("class", "glyphicon glyphicon-file");
((HtmlGenericControl)e.Item.FindControl("label2")).Attributes.Add("style", "color: green;");
((HtmlGenericControl)e.Item.FindControl("label2")).Attributes.Add("title", *<value of dataitem(sFile)>*);
}
}
}
私が立ち往生しているのは分離コードにあります。上記の rpDB_item_ItemDataBound イベントなど、いくつかの式で dataitem の列の 1 つの値を使用したいと考えています。
いいえ:
if (e.Item.DataItem("Online") == "Online")
{
((HtmlGenericControl)e.Item.FindControl("label2")).Attributes.Add("title", * e.Item.DataItem("sFile").ToString()*);
}
明らかに何かがおかしいので、ここからどこへ行くべきかは確かです。理想的には、dataitem 値または値自体に基づいて、クラスまたはラベルのタイトルを設定しています。
コードビハインドを作成するなど、これを行うためのより良い方法があるかもしれ<div>
ませんが、それを行う方法もよくわかりませんか? ヘルプや提案をいただければ幸いです (NOVICE C#)
編集:私はそれが正しいと思うこの機能を追加しました
protected void FileExists(string url, RepeaterItemEventArgs e)
{
Label myLabel = (Label)(e.Item.FindControl("divfile"));
url = "@" + url;
if (File.Exists(url))
{
myLabel.Attributes.Add("class", "green");
}
else { myLabel.Attributes.Add("class", "red"); }
}
そして次のラベル
<div class='anj red glyphicon glyphicon-file <%= %> id="dvFile" runat="server" title=<%# DataBinder.Eval(Container.DataItem,"FileName") %>></div>
関数をどのように呼び出すのですか? 私は試した
<%# FileExists(DataBinder.Eval(Container.DataItem,"FileName")) %>
クラス内ですが、結果の文字列を関数に送信していません。