当在ASP.NET Repeater中点击按钮时,可能会因为DataItem为空而导致NullReferenceException异常。这是由于ASP.NET的生命周期流程,当点击Repeat中的按钮时,Repeater正在被构建,但尚未有任何数据被绑定到控件。
为了解决这个问题,我们可以使用CommandArgument属性当点击按钮:
protected void rptSample_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "SubmitForm") { int Index = Convert.ToInt32(e.CommandArgument); RepeaterItem item = rptSample.Items[Index]; string TextBoxValue = ((TextBox)item.FindControl("txtSample")).Text; // txtSample is TextBox control //Do something } }
这里的CommandArgument属性为ItemIndex,可以确保我们的事件在数据绑定之后才被触发。 也可以使用其他标识符,如数据源的主键ID,这将使我们能够将标识符与数据库中的数据进行合并。