0

別のページのコード ビハインドからユーザー コントロールのクラスの値を設定しようとしていますが、それを機能させることができません。

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 であり、ページの読み込みに失敗します

4

2 に答える 2