Repeaterのロー・データ・アイテムのカラム値の取得について
3948 ワード
Repeaterのロー・データ・アイテムのカラム値を取得する方法.高手飘过~~~
実は「Repeaterの各行のデータは1つのオブジェクトで、このオブジェクトがどんなタイプなのかは、バックグラウンドでバインドされたデータソースによって決まります.私たちは通常、テーブル(DataTable)をバインドします.このオブジェクトのタイプはDataRowViewタイプです.
フロントコードは次のとおりです.
バックグラウンドでバインドされているコードは次のとおりです.
バックグラウンドでフィールドの内容を取得するコードは次のとおりです.
ここで私が赤で表記した部分を見てください.実は(DataRowView)は集合で、ある列の値が必要で、インデックスで手に入れることができます.
また、下線で書いた部分に注意しましょう.ここでは後ろの判断を誤記する人が多いので、それはいけません.具体的にどんな原理か、自分でインターネットで見てみましょう.
上記の場合、Repeaterの各オブジェクトについて(DataRowView)タイプです.
しかし、バックグラウンドでデータソースをバインドするとき、テーブルをデータソースとしてRepeaterに渡すのではない場合もあります.DataSourceの.次のようになります.
この場合、Repeaterの各オブジェクトタイプは、私たちが作成したタイプGroupです.
適切なフィールドコードを取得するには、次のようにします.
赤いマークアップの場所は対応するフィールドの内容を取得することですが、テーブルの取得とは異なり、ここではオブジェクトのメンバーを取得することが理解できます.bitSwitchOnとbitSwitchOffは私が作成したModelです.Groupの下にある2つの属性メンバー
実は「Repeaterの各行のデータは1つのオブジェクトで、このオブジェクトがどんなタイプなのかは、バックグラウンドでバインドされたデータソースによって決まります.私たちは通常、テーブル(DataTable)をバインドします.このオブジェクトのタイプはDataRowViewタイプです.
フロントコードは次のとおりです.
【サイト 】
- :<>
- :<>
- :<>
- :<>
- :<>
- :<>
- :<>
- :<>
- :<>
- :<>
- SIM :<>
- IP:
バックグラウンドでバインドされているコードは次のとおりです.
if (!string.IsNullOrEmpty(stationId) && stationId != null)
{
StationInfoDAL stationInfo = new StationInfoDAL();
this.rptStationDetailsInfo.DataSource = new DataTable();
this.rptStationDetailsInfo.DataBind();
}
バックグラウンドでフィールドの内容を取得するコードは次のとおりです.
protected void rptStationDetailsInfo_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem||e.Item.ItemType==ListItemType.Item)
{
if (((DataRowView)e.Item.DataItem)["RemoteIP"]==null||((DataRowView)e.Item.DataItem)["RemoteIP"].ToString()=="")
{
Label label = (Label)e.Item.FindControl("lblIP");
label.Visible = true;
}
}
}
ここで私が赤で表記した部分を見てください.実は(DataRowView)は集合で、ある列の値が必要で、インデックスで手に入れることができます.
また、下線で書いた部分に注意しましょう.ここでは後ろの判断を誤記する人が多いので、それはいけません.具体的にどんな原理か、自分でインターネットで見てみましょう.
上記の場合、Repeaterの各オブジェクトについて(DataRowView)タイプです.
しかし、バックグラウンドでデータソースをバインドするとき、テーブルをデータソースとしてRepeaterに渡すのではない場合もあります.DataSourceの.次のようになります.
if (!string.IsNullOrEmpty(stationId) && stationId != null)
{
StationInfoDAL stationInfo = new StationInfoDAL();
this.rptStationDetailsInfo.DataSource = new List();
this.rptStationDetailsInfo.DataBind();
}
この場合、Repeaterの各オブジェクトタイプは、私たちが作成したタイプGroupです.
適切なフィールドコードを取得するには、次のようにします.
if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType == ListItemType.AlternatingItem)
{
if ((bool)((Model.Group)e.Item.DataItem).bitSwitchOn)
{
Label label = (Label)e.Item.FindControl("lblSwitchOnInFact");
label.Visible = false;
}
if ((bool)((Model.Group)e.Item.DataItem).bitSwitchOff)
{
Label label = (Label)e.Item.FindControl("lblSwitchOffInFact");
label.Visible = false;
}
Repeater temp = (Repeater)e.Item.FindControl("rptSwitchShiftPoints");
temp.DataSource = autoRunShiftPts.GetEnabledSwitchPointsInfo(((Model.Group)e.Item.DataItem).autoRunId, ((Model.Group)e.Item.DataItem).groupId);
temp.DataBind();
}
赤いマークアップの場所は対応するフィールドの内容を取得することですが、テーブルの取得とは異なり、ここではオブジェクトのメンバーを取得することが理解できます.bitSwitchOnとbitSwitchOffは私が作成したModelです.Groupの下にある2つの属性メンバー