如果你是数据源控件绑定,那么毫无问题。repeater控件的ItemCommand事件运行很正常。
如果是你后台自己绑定个DataTable到repeater控件,那么你要把绑定代码放到IsPostBack里面。
例如:
protected
void
Page_Load(
object
sender, EventArgs e)
{
if ( ! IsPostBack)
{
string conn = " Data Source=.;Initial Catalog=Northwind;Integrated Security=True " ;
using (SqlConnection sqlconn = new SqlConnection(conn))
{
sqlconn.Open();
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter( " SELECT [ProductName] FROM [Alphabetical list of products] " , sqlconn);
sda.Fill(ds);
Repeater1.DataSource = ds.Tables[ 0 ]; Repeater1.DataBind();
}
}
}
{
if ( ! IsPostBack)
{
string conn = " Data Source=.;Initial Catalog=Northwind;Integrated Security=True " ;
using (SqlConnection sqlconn = new SqlConnection(conn))
{
sqlconn.Open();
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter( " SELECT [ProductName] FROM [Alphabetical list of products] " , sqlconn);
sda.Fill(ds);
Repeater1.DataSource = ds.Tables[ 0 ]; Repeater1.DataBind();
}
}
}
不这样做,会出现以下错误:
回发或回 调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
即使你把enableEventValidation设置true,repeater事件也是不起作用。所以你要照着我一开始的说明去做。