別のページのコード ビハインドからユーザー コントロールのクラスの値を設定しようとしていますが、それを機能させることができません。
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class itemtest : System.Web.UI.UserControl
{
public DataRowView DataRowItem { get; set; }
public class Headers
{
public string strItems { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
Headers hdrs = new Headers();
string strItems = hdrs.strItems;
if (strItems != null)
{
List<string> lstHeaders = strItems.Split(',').ToList<string>();
DataTable dtHeaders = new DataTable();
dtHeaders.Columns.Add("Header", typeof(String));
dtHeaders.Columns.Add("Value", typeof(String));
foreach (var item in lstHeaders)
{
DataRow drHeaders = dtHeaders.NewRow();
drHeaders["Header"] = item.ToString();
drHeaders["Value"] = DataRowItem[item.ToString()].ToString();
dtHeaders.Rows.Add(drHeaders);
}
rptHeaders.DataSource = dtHeaders;
rptHeaders.DataBind();
}
}
}
そして私の他のpage.csで
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class ListViewTest : System.Web.UI.Page
{
public string strTableHeaders;
public DataRowView DataRowItem { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
strTableHeaders = "UserID,MachineName";
}
protected void lvExample_ItemDataBound(object sender, ListViewItemEventArgs e)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
itemtest itemHeaders = (itemtest)e.Item.FindControl("itemsMain");
if (itemHeaders != null)
itemHeaders.Headers.strItems = strTableHeaders;
}
}
}
エラー Compiler Error Message: CS0572: 'Headers': cannot reference a type through an expression; が表示されます。項目 itemHeaders.Headers.strItems = strTableHeaders; の代わりに「itemtest.Headers」を試してください。
誰か私を助けて?私はこれにかなり慣れていないので、ラーメン用語が最適です
ありがとう
編集:私の古い方法はちょうど
public DataRowView DataRowItem { get; set; }
public string strItems { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
if (strItems != null)
{
List<string> lstHeaders = strItems.Split(',').ToList<string>();...
しかし、起こっているように見えるのは、ユーザーコントロールのページロードイベントがlistview_itemdataboundイベントの前にトリガーされていることです。ユーザーコントロールはリストビューでのみ使用されるため、どのように可能かわかりません...
そのため、strItems は常に null であり、ページの読み込みに失敗します