好的,我有一个用户控件。里面有一个文本框和其他类似的东西,还有一个保存按钮。
我在itemtemplate的repeater控件中有这个用户控件。
现在,每当我第一次运行它时,它似乎工作得很好。当我更改文本框的内容并保存它时,我会得到各种空引用错误。
最令人困惑的部分是,它似乎创建了我的类的一个新实例,但跳过了
Page_Load
方法等等。这是我在用户控件中的代码示例
Data.Report ThisReport;
[Browsable(true)]
public int ReportID
{
get;
set;
}
protected void Page_Load(object sender, EventArgs e)
{
if (ReportID == 0)
{
throw new ArgumentException("ReportID can not be 0");
}
var report = Data.Report.SingleOrDefault(x => x.ID==ReportID);
txtName.Text = report.Description;
ThisReport = report;
}
protected void btnSave_Click(object sender, EventArgs e)
{
var x=ThisReport.Foo;
}
它在中继器中使用如下:
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ReportsData">
<ItemTemplate>
<uc:ReportManager ReportID="<%# ((Data.Report)Container.DataItem).ReportID %>"
runat="server" />
</ItemTemplate>
</asp:Repeater>
为什么它似乎初始化了我的用户控件的新实例?我如何克服这个问题?